在 CentOS 8 上安装 MySQL

MySQL 是最流行的开源关系数据库管理系统。在 CentOS 8 中,您可从默认的存储库中安装最新版本的 MySQL 数据库服务器 8.0 版。

MySQL 8.0 引入了许多新功能和更改,使某些应用程序与此版本不兼容。在选择要安装的 MySQL 版本之前,请查阅要在 CentOS 服务器上部署的应用程序的文档。

CentOS 8 还提供了 MariaDB 10.3 ,它是 MySQL 5.7 的“直接替代品”,但有一些限制。如果您的应用程序与 MySQL 8.0 不兼容,请安装 MariaDB 10.3 。

在本教程中,我们将向您展示如何在 CentOS 8 系统上安装和保护 MySQL 8.0 。

在 CentOS 8 上安装 MySQL 8.0

以 root 或具有 sudo 特权的用户身份,通过使用 CentOS 软件包管理器安装 MySQL 8.0 服务器:

sudo dnf install @mysql

@mysql 模块将安装 MySQL 及其所有依赖项。

安装完成后,通过运行以下命令来启动 MySQL 服务并使它在启动时自动启动:

sudo systemctl enable --now mysqld

要检查 MySQL 服务器是否正在运行,请输入:

sudo systemctl status mysqld
● mysqld.service - MySQL 8.0 database server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-10-17 22:09:39 UTC; 15s ago
   ...

增强 MySQL 安全性

运行 mysql_secure_installation 执行一些与安全性相关的操作的脚本,并设置 MySQL root 密码:

sudo mysql_secure_installation

系统将要求您配置 VALIDATE PASSWORD PLUGIN ,用于测试 MySQL 用户密码的强度并提高安全性。密码验证策略分为三个级别:低,中和强。如果你不想来设置验证密码插件就直接按下 ENTER

在下一个提示符下,将要求您设置 MySQL root 用户的密码。完成此操作后,脚本还将要求您删除匿名用户,限制 root 用户对本地计算机的访问,并删除测试数据库。您应该对所有问题回答 yes

要从命令行与 MySQL 服务器进行交互,请使用 MySQL 客户端实用程序,它作为依赖项安装。输入以下内容测试 root 访问权限:

mysql -u root -p

在出现提示时输入 root 密码,然后将显示 MySQL 外壳,如下所示:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.17 Source distribution

完成。您已经在 CentOS 服务器上安装并保护了 MySQL 8.0 ,并准备使用它。

身份验证方法

从 CentOS 8 存储库中安装的 MySQL 8.0 服务器被默认被设置为使用旧的身份验证插件 mysql_native_password ,因为某些客户端工具和库与新的身份验证插件 caching_sha2_password 方法不兼容。

mysql_native_password 该方法对于大多数设置都应该适用。但是,如果要将默认身份验证插件更改 caching_sha2_password 为更快并提供更好的安全性,请打开以下配置文件:

sudo vim /etc/my.cnf.d/mysql-default-authentication-plugin.cnf

default_authentication_plugin 的值更改为 caching_sha2_password

[mysqld]
default_authentication_plugin=caching_sha2_password

关闭并保存文件,然后重新启动 MySQL 服务器以使更改生效:

sudo systemctl restart mysqld

结论

CentOS 8 默认仓库中已经包含了 MySQL 8.0,安装只需输入 dnf install @mysql,就这么简单。

现在您的 MySQL 服务器已经启动并正在运行,您可以连接到 MySQL Shell ,并开始创建新的数据库和用户