随着CentOS 8MySQL的发布,CentOS的存储库中不再提供世界上最流行的开源关系数据库管理系统MySQL,MariaDB已成为默认的数据库系统。

MariaDB是MySQL的向后兼容二进制替代。在本教程中,我们将向您展示如何在CentOS 8 Linux安装MySQL。

如果要安装MariaDB而不是MySQL,请查看我们的教程如何在CentOS 8安装MariaDB

在开始本教程之前,请确保您你以root用户或者具有sudo权限的用户登录到CentOS服务器。

最好的做法是以sudo用户而不是root用户运行管理命令,如果您的系统上没有sudo用户,则可以查看我们的教程如何在CentOS创建sudo用户

我们将向您展示如何安装MySQL 8.0。如果不确定要安装哪个版本,请查阅要在服务器上部署的应用程序的文档。在撰写本文时,MySQL的最新版本是8.0版。

然后使用yum安装MySQL 8.0,在安装过程中,yum可能会提示您导入MySQL GPG密钥。输入y,然后按Enter

安装完成后,mysql将作为Systemd的服务在后台运行。你可以使用systemctl命令sudo systemctl enable mysqld使其能够在重启时自动启动。

除了设置自动启动,你还需要进行第一次的MySQL服务的启动,运行命令sudo systemctl start mysqld启动mysql服务。

然后你可以通过使用命令sudo systemctl status mysqld来检查MySQL服务状态。

sudo yum install mysql-server
sudo systemctl enable mysqld
sudo systemctl start mysqld
sudo systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 三 2022-09-07 00:27:14 PDT; 2s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 1614 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 1691 (mysqld)
   Status: "Server is operational"
    Tasks: 39
   CGroup: /system.slice/mysqld.service
           └─1691 /usr/sbin/mysqld

连接MySQL

当MySQL安装完成后,你可能会想运行命令mysql -u root -p登录到MySQL服务器。

如果你登录到CentOS的用户不是root用户你将不能访问MySQL服务器。如果你尝试使用密码登录也将被拒绝连接。

你将会收到类似于这样的消息(28000): Access denied for user 'root'@'localhost' (using password: YES)或者ERROR 1045 (28000): Access denied for user 'root'@'localhost'。

这是因为在MySQL 8.0,对root用户使用auth_socket插件进行身份验证。auth_socket插件仅对从localhost连接到Unix socket文件用户进行身份验证。

这意味着您无法通过提供密码来以root用户连接到MySQL服务器。但你可以运行命令sudo mysql连接到MySQL服务器。

sudo mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql>

如果您要使用外部程序,例如phpMyAdmin。以root用户连接到MySQL服务器,则有两个选择。

第一个选项是将身份验证方法从auth_socket更改为mysql_native_password。您可以通过运行ALTER USER SQL语句命令来做到这一点。

第二个选项是创建一个新的专用管理用户,该用户可以访问所有数据库。

下面将使用第一个选项运行ALTER USERSQL语句使root用户使用密码进行身份验证。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;

如果你需要配置MySQL用户的远程访问,可参考我们的教程如何允许MySQL数据库服务器的远程连接

结论

在本教程中,我们向您展示了如何在CentOS 8服务器安装和连接MySQL服务器。如果您有任何问题或反馈,请随时发表评论。