在 CentOS 7 上安装 MySQL

随着 CentOS 7 的发布, CentOS 的软件仓库中不再提供世界上最流行的开源关系数据库管理系统 MySQL , MariaDB 已成为默认的数据库系统。 MariaDB 是 MySQL 的向后兼容,二进制插件替代品。

在本教程中,我们将向您展示如何在 CentOS 7 机器上安装 MySQL 。

如果要安装 MariaDB 而不是 MySQL ,请查看我们的安装说明教程。

先决条件

在开始本教程之前,请确保使用具有 sudo 权限的用户帐户或 root 用户登录服务器。最好使用 sudo 用户运行管理命令作而不是用 root 用户运行,如果系统上没有 sudo 用户,则可以按照这些说明创建 sudo 用户

正如我们在介绍中提到的, MySQL 在默认的 CentOS 7 软件仓库中不可用,因此我们将从 MySQL Yum 软件仓库安装软件包。在以下部分中,我们将向您展示如何安装 MySQL 8.0 和 MySQL 5.7 。

在 CentOS 7 服务器上您最好只安装一个 MySQL 版本。如果您不确定要安装哪个版本,请参阅您要在服务器上部署的应用程序的文档。

在 CentOS 7 上安装 MySQL 8.0

在撰写本文时,最新版本的 MySQL 是 8.0 版。要在 CentOS 7 服务器上安装它,请按照以下步骤操作:

  1. 使用以下命令启用 MySQL 8.0 软件仓库:

    1
    sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
  2. 用 yum 安装 MySQL 8.0 包:

    1
    sudo yum install mysql-community-server

    在安装过程中, yum 可能会提示您导入 MySQL GPG 密钥。输入 y 并点击 Enter

在 CentOS 7 上安装 MySQL 5.7

要在 CentOS 7 服务器上安装以前的稳定版本的 MySQL 5.7 版,请按照以下步骤操作:

  1. 使用以下命令启用 MySQL 5.7 软件仓库:

    1
    sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
  2. 安装 MySQL 5.7 软件包:

    像安装任何其他软件包一样,使用 yum 安装 MySQL 为:

    1
    sudo yum install mysql-community-server

以下部分与 MySQL 8.0 和 MySQL 5.7 相关。

启动 MySQL

安装完成后,启动 MySQL 服务并启用随机启动:

1
2
sudo systemctl enable mysqld
sudo systemctl start mysqld

我们可以通过输入以下内容来检查 MySQL 服务状态

1
sudo systemctl status mysqld
1
2
3
4
5
6
7
8
9
10
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2018-05-23 11:02:43 UTC; 14min ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 4293 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 4310 (mysqld)
Status: "SERVER_OPERATING"
CGroup: /system.slice/mysqld.service
└─4310 /usr/sbin/mysqld

让 MySQL 更安全

当 MySQL 服务器第一次启动时,会为 MySQL root 用户生成临时密码。您可以通过运行以下命令找到密码:

1
sudo grep 'temporary password' /var/log/mysqld.log

输出应该如下所示:

1
2018-05-23T10:59:51.251159Z 5 [Note] [MY-010454] [Server] A temporary password is generated for [email protected]: q&0)V!?fjksL

记下密码,因为下一个命令会要求您输入临时 root 密码。

运行该 mysql_secure_installation 命令以提高 MySQL 安装的安全性:

1
sudo mysql_secure_installation
1
2
3
Securing the MySQL server deployment.

Enter password for user root:

输入临时密码后,系统会要求您为 root 用户设置新密码。密码长度必须至少为 8 个字符,并且至少包含一个大写字母,一个小写字母,一个数字和一个特殊字符。

1
2
3
4
5
The existing password for the user account root has expired. Please set a new password.

New password:

Re-enter new password:

该脚本还将要求您删除匿名用户,限制 root 用户对本地计算机的访问权限并删除测试数据库。你应该对所有问题回答“是”(是)。

从命令行连接到 MySQL

要通过终端与 MySQL 交互,我们将使用 MySQL 客户端工具,它已经作为 MySQL 服务器软件包的依赖项被安装。

root 用户的身份登录 MySQL 服务器:

1
mysql -u root -p

系统将提示您输入先前设置的 root 密码, 就是刚刚运行 mysql_secure_installation 脚本时设置的密码。

输入密码后,您将看到 mysql shell ,如下所示:

1
2
3
4
5
6
7
8
9
10
11
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.11 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

创建数据库

连接到 MySQL shell 后,可以通过输入以下命令来创建新数据库:

1
CREATE DATABASE new_database;
1
Query OK, 1 row affected (0.00 sec)

创建表

现在我们创建了一个数据库,我们可以创建一个表来存储一些数据。

在运行用于创建表的 SQL 语句之前,我们需要连接到数据库:

1
use new_database;

在这个例子中,我们将创建一个名为 contacts 的简单表,这个表有三个字段 idnameemail

1
2
3
4
5
CREATE TABLE contacts (
id INT PRIMARY KEY,
name VARCHAR(30),
email VARCHAR(30)
);
1
Query OK, 1 row affected (0.00 sec)

结论

在本教程中,我们向您展示了如何在 CentOS 7 服务器上安装 Mysql 和让 MySQL 服务器更加安全。我们还向您展示了如何连接到 MySQL shell 以及如何创建新的数据库和表。

现在您的 MySQL 服务器已启动并运行,并且您知道如何从命令行连接到 MySQL 服务器,您可能需要以下教程获取更多知识:

如果您不喜欢命令行更喜欢使用 Web 界面,则可以安装 phpMyAdmin 并通过它管理您的 MySQL 数据库。