用C语言编写,MySQL是一个开源,跨平台以及最广泛使用的关系型数据库管理系统(RDMS)之一。它是LAMP栈不可分割的部分并且是网站托管,数据分析和电子商务中流行的数据库管理系统。
当前稳定发行是MySQL 8.0.25并且在2021年5月11日发布。最近发行的重点是:
以及更多,对于所有特性和增强的综合涵盖你可以检查发布注释。
在本教程中,我们演示了如何在Rocky Linux和AlmaLinux上安装MySQL。
当我们安装软件包时,总是推荐从系统包更新开始。在某些情况下,升级内核时需要一次重启。因而,在命令行上,执行以下命令来更新内核和系统包:
[root@localhost dbuser]# dnf update -y
Last metadata expiration check: 0:13:15 ago on Tue 28 Jun 2022 04:05:16 PM CST.
Dependencies resolved.
=========================================================================================================================================================
Package Architecture Version Repository Size
=========================================================================================================================================================
Upgrading:
almalinux-release x86_64 8.6-2.el8
...
Installed:
grub2-tools-efi-1:2.02-123.el8_6.8.alma.x86_64
Complete!
[root@localhost dbuser]#
继续前进,我们需要启用由AppStream仓库提供的MySQL 8.0模块。现在,这是被提供的唯一MySQL模块并且你能够通过运行以下命令验证这个:
[root@localhost dbuser]# dnf module list mysql
Last metadata expiration check: 0:28:50 ago on Tue 28 Jun 2022 04:05:16 PM CST.
AlmaLinux 8 - AppStream
Name Stream Profiles Summary
mysql 8.0 [d] client, server [d] MySQL Module
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
要启用MySQL模块srream,运行以下命令:
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[root@localhost dbuser]# dnf module enable mysql:8.0
Last metadata expiration check: 0:30:05 ago on Tue 28 Jun 2022 04:05:16 PM CST.
Dependencies resolved.
=========================================================================================================================================================
Package Architecture Version Repository Size
=========================================================================================================================================================
Enabling module streams:
mysql 8.0
Transaction Summary
=========================================================================================================================================================
Is this ok [y/N]: y
Complete!
使能了这个模块,按如下在Rocky Linux上安装MySQL 8.0:
[root@localhost dbuser]# dnf install @mysql
Last metadata expiration check: 0:31:52 ago on Tue 28 Jun 2022 04:05:16 PM CST.
Dependencies resolved.
=========================================================================================================================================================
Package Architecture Version Repository Size
=========================================================================================================================================================
Installing group/module packages:
mysql-server x86_64 8.0.26-1.module_el8.4.0+2532+b8928c02 appstream 25 M
Installing dependencies:
mariadb-connector-c-config noarch 3.1.11-2.el8_3 appstream 14 k
mecab x86_64 0.996-1.module_el8.4.0+2532+b8928c02.9 appstream 392 k
mysql x86_64 8.0.26-1.module_el8.4.0+2532+b8928c02 appstream 12 M
mysql-common x86_64 8.0.26-1.module_el8.4.0+2532+b8928c02 appstream 133 k
mysql-errmsg x86_64 8.0.26-1.module_el8.4.0+2532+b8928c02 appstream 597 k
protobuf-lite x86_64 3.5.0-13.el8 appstream 148 k
Installing module profiles:
mysql/server
Transaction Summary
=========================================================================================================================================================
Install 7 Packages
Total download size: 38 M
Installed size: 195 M
Is this ok [y/N]: y
Downloading Packages:
...
Installed:
mariadb-connector-c-config-3.1.11-2.el8_3.noarch mecab-0.996-1.module_el8.4.0+2532+b8928c02.9.x86_64
mysql-8.0.26-1.module_el8.4.0+2532+b8928c02.x86_64 mysql-common-8.0.26-1.module_el8.4.0+2532+b8928c02.x86_64
mysql-errmsg-8.0.26-1.module_el8.4.0+2532+b8928c02.x86_64 mysql-server-8.0.26-1.module_el8.4.0+2532+b8928c02.x86_64
protobuf-lite-3.5.0-13.el8.x86_64
Complete!
要用MySQL数据库服务器执行任何操作,我们需要首先启动这个服务。但首先,按以下使其能在系统启动时启动:
[root@localhost dbuser]# systemctl enable mysqld
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.
接着启动MySQL守护程序:
[root@localhost dbuser]# systemctl start mysqld
我们通过执行以下能够验证MySQL正在运行:
[root@localhost dbuser]# 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 Tue 2022-06-28 16:41:22 CST; 6s ago
Process: 34862 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
Process: 34735 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, status=0/SUCCESS)
Process: 34710 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
Main PID: 34817 (mysqld)
Status: "Server is operational"
Tasks: 38 (limit: 23504)
Memory: 462.2M
CGroup: /system.slice/mysqld.service
└─34817 /usr/libexec/mysqld --basedir=/usr
Jun 28 16:41:14 localhost.localdomain systemd[1]: Starting MySQL 8.0 database server...
Jun 28 16:41:14 localhost.localdomain mysql-prepare-db-dir[34735]: Initializing MySQL database
Jun 28 16:41:22 localhost.localdomain systemd[1]: Started MySQL 8.0 database server.
最后一步是要使得刚安装的MySQL数据库服务器安全。原因是:默认,MySQL带有充满漏洞的默认设置出现,这些漏洞会被黑客利用。像这样,我们需要通过运行mysql_secure_installation脚本加固它。
当执行这个脚本时,将提示你使用VALIDATE_PASSWORD插件,它确定了密码强度等级并且使得使用者只能设置健壮的密码。
设置这个插件,输入'Y'并且按回车。这个插件提供了3种密码策略等级,即是:LOW, MEDIUM和STRONG。
对应STRONG密码策略输入2并且按回车、
接着,确定设置一个符合所选密码等级的强MYSQL根密码。
[root@localhost dbuser]# mysql_secure_installation
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
Please set the password for root here.
New password:
Re-enter new password:
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
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : n
... skipping.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
All done!
这个插件提供了一种密码强度的估计,在这种情况中,100。这表示我们满足了密码强度要求:一个强密码需要至少8个字符,其应该由数值,大小写和特殊字符组成。
要继续设置密码,按'Y'。否则,按'n'回退并且做所需调整。
对于接下来的提示,按'Y'移除匿名用户,防止root用户远程登陆,并且在进入到一个生产环境前,移除测试数据库。
[root@localhost dbuser]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.26 Source distribution
Copyright (c) 2000, 2021, 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.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SELECT_VERSION();
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT_VERSION()' at line 1
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.0.26 |
+-----------+
1 row in set (0.00 sec)
mysql>
一旦做完,使用MySQL客户端按演示地连接数据库。证实提供的root密码。
[dbuser@localhost ~]$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 8.0.26 Source distribution
Copyright (c) 2000, 2021, 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.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
你可以通过运行以下查询确认版本:
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.0.26 |
+-----------+
1 row in set (0.00 sec)
mysql>
在Rocky Linux或AlmaLinux上安装MySQL是一个非常简单和明白的过程。由于AppStrem仓库已经提供MySQL8.0模块stream, 没有必要添加任何第三方仓库。