MySQL是一个开源的关系型数据库管理系统,通常作为流行的LEMP(Linux, Nginx, MySQL/MariaDB, PHP/Python/Perl)技术栈的一部分进行安装。它实现了关系模型和结构化查询语言(SQL)来管理和查询数据。
本教程将指导如何在CentOS 8服务器上安装MySQL版本8。
要完成本教程,需要一个运行CentOS 8的服务器。该服务器应具有具有管理权限的非root用户,并配置了firewalld防火墙。有关如何设置,请参考CentOS 8初始服务器设置指南。
在CentOS 8上,MySQL版本8可以从默认仓库中获取。运行以下命令以安装mysql-server包及其依赖项:
sudo dnf install mysql-server
当提示时,按y然后按ENTER确认想要继续:
输出...
安装49个包
总下载大小:46 M
安装大小:252 M
这样可以吗[y/N]:y
安装完成后,MySQL将安装在服务器上,但尚未运行。刚刚安装的包将MySQL配置为名为mysqld.service的systemd服务。要使用MySQL,需要使用systemctl命令启动它:
sudo systemctl start mysqld.service
要检查服务是否正确运行,请运行以下命令。注意,对于许多systemctl命令(包括start和这里显示的status),不需要在服务名称后包含.service:
sudo systemctl status mysqld
如果MySQL成功启动,输出将显示MySQL服务处于活动状态:
输出●mysqld.service - MySQL 8.0数据库服务器
加载:已加载(/usr/lib/systemd/system/mysqld.service;已启用;供应商预设:已禁用)
活跃:活跃(运行)自2020年3月12日14:07:41 UTC起;1分钟7秒前
主PID:15723(mysqld)
状态:“服务器运行正常”
任务:38(限制:5056)
内存:474.2M
CGroup:/system.slice/mysqld.service
└─15723 /usr/libexec/mysqld --basedir=/usr
3月12日14:07:32 cent-mysql-3 systemd[1]:启动MySQL 8.0数据库服务器...
3月12日14:07:32 cent-mysql-3 mysql-prepare-db-dir[15639]:初始化MySQL数据库
3月12日14:07:41 cent-mysql-3 systemd[1]:启动MySQL 8.0数据库服务器。
接下来,使用以下命令设置MySQL在服务器启动时启动:
sudo systemctl enable mysqld
注意:如果想更改此行为并禁用MySQL在启动时启动,可以通过运行以下命令实现:
sudo systemctl disable mysqld
现在,MySQL已安装、运行并已在服务器上启用。接下来,将介绍如何使用随MySQL实例预安装的shell脚本来加强数据库的安全性。
MySQL包括一个安全脚本,允许更改一些默认配置选项以提高MySQL的安全性。要使用安全脚本,请运行以下命令:
sudo mysql_secure_installation
这将引导完成一系列提示,询问是否希望对MySQL安装的安全选项进行某些更改。第一个提示将询问是否希望设置Validate Password插件,可以使用它来测试MySQL密码的强度。
如果选择设置Validate Password插件,脚本将询问选择密码验证级别。最强大的级别(通过输入2选择)将要求密码至少为8个字符长,并包含大写字母、小写字母、数字和特殊字符的混合:
输出保护MySQL服务器部署。
使用空白密码连接到MySQL。
VALIDATE PASSWORD COMPONENT可用于测试密码并提高安全性。它检查密码的强度并允许用户只设置足够安全的密码。是否希望设置VALIDATE PASSWORD组件?
按y|Y为是,按任何其他键为否:Y
有三个级别的密码验证策略:
低 长度≥8
中等 长度≥8,数字,大小写混合,特殊字符
强 长度≥8,数字,大小写,特殊字符和字典文件
请输入0=低,1=中等,2=强:2
无论选择是否设置Validate Password插件,下一个提示都将是为MySQL root用户设置密码。输入然后确认选择的安全密码:
输出
请在这里为root设置密码。
新密码:
重新输入新密码:
如果使用了Validate Password插件,将收到有关新密码强度的反馈。然后脚本将询问是否希望继续使用刚刚输入的密码,或者是否希望输入一个新密码。假设对刚刚输入的密码的强度感到满意,按Y继续脚本:
输出
密码估计强度:100
是否希望继续使用提供的密码?(按y|Y为是,按任何其他键为否):Y
接下来,可以按Y然后按ENTER接受所有后续问题的所有默认值。这将删除一些匿名用户和测试数据库,禁用远程root登录,并加载这些新规则,以便MySQL立即遵守所做的更改。
这样,就在CentOS 8服务器上安装并保护了MySQL。作为最后一步,将测试数据库是否可访问并按预期工作。
可以通过连接到mysqladmin工具来验证安装并获取有关它的信息,这是一个允许运行管理命令的客户端。使用以下命令以root身份连接到MySQL(-u root),提示输入密码(-p)并返回安装的版本:
mysqladmin -u root -p version
将看到类似于此的输出:
mysqladmin Ver 8.0.17 for Linux on x86_64 (Source distribution)
版权所有(c) 2000, 2019, Oracle及其/或其关联公司。保留所有权利。
Oracle是Oracle Corporation及其/或其关联公司的注册商标。其他名称可能是各自所有者的商标。
服务器版本 8.0.17
协议版本 10
连接 本地通过UNIX套接字
UNIX套接字 /var/lib/mysql/mysql.sock
正常运行时间: 2小时52分钟37秒
线程:2 问题:20 慢查询:0 打开:131
刷新表:3 打开表:48 每秒查询平均数:0.001
这表明安装成功。
如果想连接到MySQL并开始向其中添加数据,请运行以下命令:
mysql -u root -p
与前面的mysqladmin命令一样,此命令包括-u选项,允许指定想要连接的用户(在这种情况下是root),以及-p选项,告诉命令提示输入在前一步中设置的用户密码。
输入root MySQL用户密码后,将看到MySQL提示符:
mysql>
从那里,可以开始使用MySQL安装来创建和加载数据库并开始运行查询。
通过遵循本教程,已在CentOS 8服务器上安装并保护了MySQL。从这里,可以安装Nginx和PHP,在服务器上拥有一个完全运行的LEMP堆栈。