🛠 准备工作
开始前,最好先更新系统并安装一些可能的依赖:
sudo yum update -y
sudo yum install -y wget
如果系统之前有安装过 MariaDB 或旧版 MySQL,建议先卸载它们以避免冲突:
sudo yum remove -y mysql* mariadb*
sudo rm -rf /var/lib/mysql /etc/my.cnf*
使用 Yum 仓库安装(推荐)
-
添加 MySQL Yum 仓库 首先,下载并安装 MySQL 官方的 Yum 仓库配置包。
# 针对 CentOS 7 (El7) wget https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm # 或者针对 CentOS 8/9 (El8, El9),请根据你的系统版本选择对应的包,例如对于 CentOS 9: # wget https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm sudo rpm -ivh mysql80-community-release-el*.rpm
-
安装 MySQL 8 通过 yum 命令安装 MySQL 服务器社区版。
sudo yum install -y mysql-community-server
-
启动 MySQL 服务并设置开机自启 安装完成后,启动 MySQL 服务并让它开机自动启动。
sudo systemctl start mysqld sudo systemctl enable mysqld
-
查看初始临时密码 MySQL 首次启动后会为 'root'@'localhost' 用户生成一个临时密码。你需要查看日志文件来找到这个密码。
sudo grep 'temporary password' /var/log/mysqld.log
请记下这个临时密码,下一步登录时会用到。
-
运行安全配置脚本并设置 root 密码 使用刚才找到的临时密码以 root 用户身份登录 MySQL:
mysql -u root -p
在 MySQL 提示符下,强烈建议你立即修改 root 用户的密码(
your_new_strong_password
请替换为你自己设定的强密码):ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_strong_password'; FLUSH PRIVILEGES;
之后,你可以运行
mysql_secure_installation
命令来进行一些额外的安全设置,例如移除匿名用户、禁止 root 远程登录等。 -
(可选)配置远程访问和防火墙
-
配置远程访问:默认情况下,MySQL 的 root 用户可能不允许远程连接。如果你需要从其他机器访问,通常需要创建一个新用户并授权:
CREATE USER 'your_username'@'%' IDENTIFIED WITH mysql_native_password BY 'your_strong_password'; GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
注意:使用
'%'
允许任何主机连接会带来安全风险,请根据实际情况谨慎设置。 -
开放防火墙端口:如果系统防火墙 (firewalld) 是开启的,你需要开放 MySQL 默认的 3306 端口:
sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload
-
-
(可选)修改字符集编码 建议将 MySQL 的字符集设置为
utf8mb4
以更好地支持中文等 Unicode 字符。编辑/etc/my.cnf
文件,在[mysqld]
部分添加以下内容:[client] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
保存后,重启 MySQL 服务使配置生效:
sudo systemctl restart mysqld
问题记录
安装出现如下报错:
导入的密钥没有公钥,错误的公钥?
mysql-community-client-8.0.43-1.el9.x86_64.rpm 的公钥没有安装. 失败的软件包是:mysql-community-client-8.0.43-1.el9.x86_64
GPG密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
mysql-community-client-plugins-8.0.43-1.el9.x86_64.rpm 的公钥没有安装. 失败的软件包是:mysql-community-client-plugins-8.0.43-1.el9.x86_64
GPG密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
mysql-community-common-8.0.43-1.el9.x86_64.rpm 的公钥没有安装. 失败的软件包是:mysql-community-common-8.0.43-1.el9.x86_64
GPG密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
mysql-community-icu-data-files-8.0.43-1.el9.x86_64.rpm 的公钥没有安装. 失败的软件包是:mysql-community-icu-data-files-8.0.43-1.el9.x86_64
GPG密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
mysql-community-libs-8.0.43-1.el9.x86_64.rpm 的公钥没有安装. 失败的软件包是:mysql-community-libs-8.0.43-1.el9.x86_64
GPG密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
mysql-community-server-8.0.43-1.el9.x86_64.rpm 的公钥没有安装. 失败的软件包是:mysql-community-server-8.0.43-1.el9.x86_64
GPG密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
解决方式:
最可能的原因是系统里的MySQL GPG密钥过期了。MySQL的GPG密钥每年都会更新。错误信息里提到RPM-GPG-KEY-mysql-2022
,尝试导入更新年份的密钥,比如2023、2024或2025
# 尝试导入2023年的密钥
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
# 如果不行,再尝试2024或2025年的
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2024
sudo rpm --import https://repo.mysql-2025
修改密码问题:
首次设置root密码为简单类型时报错,不符合密码策略。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MySecurePassword123!';
解决方式:
先设置符合规则的密码,然后修改密码策略
-- 设置密码策略为低 (0/LOW, 1/MEDIUM, 2/STRONG)
SET GLOBAL validate_password.policy = 0;
-- 减少密码最小长度要求
SET GLOBAL validate_password.length = 4;
-- 减少特殊字符要求
SET GLOBAL validate_password.special_char_count = 0;
-- 减少数字要求
SET GLOBAL validate_password.number_count = 0;
-- 减少大小写字母要求
SET GLOBAL validate_password.mixed_case_count = 0;