云服务器最新版MySQL 安装步骤
1. 下载最新的 MySQL 8.0 RPM 包
wget https://repo.mysql.com/mysql80-community-release-el9.rpm
2. 安装下载的 RPM 包
sudo dnf install -y mysql80-community-release-el9.rpm
3. 导入 GPG 密钥
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
4. 启用 MySQL 8.0 仓库
sudo dnf config-manager --enable mysql80-community
5. 解决依赖冲突(关键步骤)
# 错误信息示例:
# Error: Transaction test error:
# file /usr/lib64/mysql/libmysqlclient.so.21.2.43 from install of mysql-community-libs-8.0.43-1.el9.x86_64
# conflicts with file from package mysql-libs-8.0.43-1.oc9.x86_64# 移除冲突包
sudo dnf remove -y mysql-libs # 添加 -y 参数自动确认
6. 安装 MySQL Server
sudo dnf install -y mysql-community-server
7. 启动服务并获取临时密码
sudo systemctl enable --now mysqld # 增加 --now 立即启动服务
sudo grep 'temporary password' /var/log/mysqld.log | awk 'END {print $NF}' # 优化:直接提取最后一个临时密码# 示例输出:
# &1BAtquurwRr
8. 修改 root 密码
-- 使用临时密码登录
mysql -u root -p-- 修改密码(注意密码复杂度要求)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!123';-- 刷新权限
FLUSH PRIVILEGES;-- 退出后验证
exit
mysql -u root -p # 使用新密码登录
9. 创建管理员用户并授权
-- 创建新用户(替换 your_username 和 your_strong_password)
CREATE USER 'admin'@'%' IDENTIFIED BY 'SecurePass!456';-- 授予管理员权限
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;-- 刷新权限
FLUSH PRIVILEGES;
10. 防火墙与远程连接配置(关键步骤)
# 开放防火墙端口
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload# 检查防火墙规则
sudo firewall-cmd --list-ports | grep 3306 # 确认端口开放# 验证监听地址(关键)
sudo netstat -tuln | grep 3306
# 正确输出:tcp6 0 0 :::3306 :::* LISTEN# 若显示 127.0.0.1:3306 需修改配置:
sudo vi /etc/my.cnf
[mysqld]
bind-address = 0.0.0.0 # 添加此行
sudo systemctl restart mysqld
11. 云服务器安全组配置(关键)
- 登录云控制台 → 安全组配置
- 添加入站规则:
- 协议:TCP
- 端口:3306
- 源:
0.0.0.0/0
(或指定IP)
- 应用规则
12. 连接验证测试
# 本地测试
telnet 127.0.0.1 3306# 远程测试(替换真实IP)
nc -zv 112.123.45.67 3306
常见问题解决
登录失败排查:
-
密码注意事项:
- 临时密码包含特殊字符(如
&
),需完整复制 - 密码区分大小写(
B
vsb
) - 使用引号包裹特殊字符密码:
mysql -u root -p'&1BAtquurwRr'
- 临时密码包含特殊字符(如
-
服务状态检查:
sudo systemctl status mysqld # 状态应为 active (running)
journalctl -u mysqld -n 50 # 查看最近50条日志
- 强制重置密码:
# 停止服务
sudo systemctl stop mysqld# 启动免密模式
sudo mysqld_safe --skip-grant-tables &# 登录并重置
mysql -u root
UPDATE mysql.user SET authentication_string='' WHERE User='root';
FLUSH PRIVILEGES;
exit# 重启服务
sudo killall mysqld
sudo systemctl start mysqld
远程连接失败排查:
- 认证插件冲突:
ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'SecurePass!456';
- SELinux 解决方案:
sudo semanage port -a -t mysqld_port_t -p tcp 3306 # 永久添加端口规则
sudo setenforce 0 # 临时关闭SELinux
- 深度诊断:
# 查看防火墙详情
sudo iptables -L -n | grep 3306# 网络路由检查
traceroute 112.123.45.67 -p 3306
关键补充说明
-
密码策略:
- 默认需包含大小写字母、数字、特殊字符(8位以上)
- 查看策略:
SHOW VARIABLES LIKE 'validate_password%';
-
安全建议:
- 避免使用
root
远程登录 - 生产环境建议限制安全组源IP
- 定期执行
mysql_secure_installation
- 避免使用
-
日志位置:
- 错误日志:
/var/log/mysqld.log
- 配置文件:
/etc/my.cnf
- 错误日志: