简介
MySQL是一个开源的数据库管理系统,通常作为流行的LEMP(Linux、Nginx、MySQL/MariaDB、PHP/Python/Perl)栈的一部分安装。它实现了关系模型和结构化查询语言(SQL)来管理和查询数据。
本教程解释了如何在Rocky Linux 9服务器上安装MySQL第八版。
先决条件
要完成本教程,你需要一台运行Rocky Linux 9的服务器。这台服务器应该有一个具有管理权限的非root用户和一个配置了firewalld
的防火墙。
第1步 - 安装MySQL
在Rocky Linux 9上,MySQL版本8可以从默认的软件库中获得。
运行下面的命令来安装mysql-server
包和它的一些依赖项。
sudo dnf install mysql-server
当出现提示时,按y
,然后按ENTER
,确认你要继续。
Output
. . .
Install 49 Packages
Total download size: 46 M
Installed size: 252 M
Is this ok [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服务处于活动状态。
Output
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-03-12 14:07:41 UTC; 1min 7s ago
Main PID: 15723 (mysqld)
Status: "Server is operational"
Tasks: 38 (limit: 5056)
Memory: 474.2M
CGroup: /system.slice/mysqld.service
└─15723 /usr/libexec/mysqld --basedir=/usr
Mar 12 14:07:32 rocky9-mysql systemd[1]: Starting MySQL 8.0 database server...
Mar 12 14:07:32 rocky9-mysql mysql-prepare-db-dir[15639]: Initializing MySQL database
Mar 12 14:07:41 rocky9-mysql systemd[1]: Started MySQL 8.0 database server.
接下来,用以下命令将MySQL设置为在服务器启动时启动。
sudo systemctl enable mysqld
注意:如果你想改变这种行为,禁止MySQL在启动时启动,你可以通过运行以下命令来实现。
sudo systemctl disable mysqld
现在MySQL已经在你的服务器上安装、运行并启用。接下来,我们将讨论如何使用预装在MySQL实例中的shell脚本来加强数据库的安全性。
第2步 - 保护MySQL的安全
MySQL包括一个安全脚本,允许你改变一些默认配置选项,以提高MySQL的安全性。
要使用安全脚本,请运行以下命令。
sudo mysql_secure_installation
这将带你通过一系列的提示,询问你是否要对你的MySQL安装的安全选项进行某些改变。第一个提示将询问你是否想设置验证密码插件,你可以用它来测试你的MySQL密码的强度。
如果你选择设置验证密码插件,脚本将要求你选择一个密码验证级别。最强的级别--你通过输入2
来选择--将要求你的密码至少有八个字符的长度,并包括大写、小写、数字和特殊字符的组合。
Output
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
无论你是否选择设置验证密码插件,下一个提示将是为MySQL根用户设置密码。输入并确认一个你选择的安全密码。
Output
Please set the password for root here.
New password:
Re-enter new password:
如果你使用了验证密码插件,你会收到关于新密码强度的反馈。然后,脚本会问你是否要继续使用你刚刚输入的密码,或者你是否要输入一个新的密码。假设你对刚才输入的密码强度感到满意,请输入Y
,继续脚本。
Output
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
之后,你可以按Y
,然后按ENTER
,接受所有后续问题的默认值。这将删除一些匿名用户和测试数据库,禁用远程root登录,并加载这些新规则,以便MySQL立即尊重你所做的改变。
就这样,你已经在你的Rocky Linux 9服务器上安装并保护了MySQL。作为最后一步,我们将测试数据库是否可以访问并按预期工作。
第3步 - 测试MySQL
你可以通过连接mysqladmin
工具来验证你的安装并获得相关信息,这个客户端可以让你运行管理命令。使用下面的命令,以root身份连接到MySQL (-u root
),提示输入密码 (-p
),并返回安装的版本。
mysqladmin -u root -p version
你会看到类似这样的输出。
输出
mysqladmin Ver 8.0.28 for Linux on x86_64 (Source distribution)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 8.0.28
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 1 min 11 sec
Threads: 2 Questions: 16 Slow queries: 0 Opens: 133 Flush tables: 3 Open tables: 49 Queries per second avg: 0.225
这表明你的安装是成功的。
如果你想连接到MySQL并开始向其添加数据,请运行以下命令。
mysql -u root -p
与前面的mysqladmin
命令一样,这个命令包括-u
选项,允许你指定你想连接的用户(这里是 root),以及-p
选项,告诉命令提示你在上一步设置的用户密码。
在你输入你的rootMySQL用户的密码后,你将看到MySQL提示。
从那里,你可以开始使用你的MySQL安装来创建和加载数据库并开始运行查询。
总结
通过本教程,你已经在Rocky Linux 9服务器上安装了MySQL并保证了其安全性。从这里,你可以安装Nginx和PHP,在你的服务器上有一个完全可操作的LEMP栈。