云服务器最新版MySQL 安装步骤

1. 下载最新的 MySQL 8.0 RPM 包

bash 复制代码
wget https://repo.mysql.com/mysql80-community-release-el9.rpm

2. 安装下载的 RPM 包

bash 复制代码
sudo dnf install -y mysql80-community-release-el9.rpm

3. 导入 GPG 密钥

bash 复制代码
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

4. 启用 MySQL 8.0 仓库

bash 复制代码
sudo dnf config-manager --enable mysql80-community

5. 解决依赖冲突(关键步骤)

bash 复制代码
# 错误信息示例:
# 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

bash 复制代码
sudo dnf install -y mysql-community-server

7. 启动服务并获取临时密码

bash 复制代码
sudo systemctl enable --now mysqld  # 增加 --now 立即启动服务
sudo grep 'temporary password' /var/log/mysqld.log | awk 'END {print $NF}'  # 优化:直接提取最后一个临时密码

# 示例输出:
# &1BAtquurwRr

8. 修改 root 密码

sql 复制代码
-- 使用临时密码登录
mysql -u root -p

-- 修改密码(注意密码复杂度要求)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!123';

-- 刷新权限
FLUSH PRIVILEGES;

-- 退出后验证
exit
mysql -u root -p  # 使用新密码登录

9. 创建管理员用户并授权

sql 复制代码
-- 创建新用户(替换 your_username 和 your_strong_password)
CREATE USER 'admin'@'%' IDENTIFIED BY 'SecurePass!456';

-- 授予管理员权限
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;

-- 刷新权限
FLUSH PRIVILEGES;

10. 防火墙与远程连接配置(关键步骤)

bash 复制代码
# 开放防火墙端口
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
ini 复制代码
[mysqld]
bind-address = 0.0.0.0  # 添加此行
bash 复制代码
sudo systemctl restart mysqld

11. 云服务器安全组配置(关键)

  1. 登录云控制台 → 安全组配置
  2. 添加入站规则:
    • 协议:TCP
    • 端口:3306
    • 源:0.0.0.0/0(或指定IP)
  3. 应用规则

12. 连接验证测试

bash 复制代码
# 本地测试
telnet 127.0.0.1 3306

# 远程测试(替换真实IP)
nc -zv 112.123.45.67 3306

常见问题解决

登录失败排查:
  1. 密码注意事项

    • 临时密码包含特殊字符(如 &),需完整复制

    • 密码区分大小写(B vs b

    • 使用引号包裹特殊字符密码:

      bash 复制代码
      mysql -u root -p'&1BAtquurwRr'
  2. 服务状态检查

bash 复制代码
sudo systemctl status mysqld  # 状态应为 active (running)
journalctl -u mysqld -n 50   # 查看最近50条日志
  1. 强制重置密码
bash 复制代码
# 停止服务
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
远程连接失败排查:
  1. 认证插件冲突
sql 复制代码
ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'SecurePass!456';
  1. SELinux 解决方案
bash 复制代码
sudo semanage port -a -t mysqld_port_t -p tcp 3306  # 永久添加端口规则
sudo setenforce 0                                  # 临时关闭SELinux
  1. 深度诊断
bash 复制代码
# 查看防火墙详情
sudo iptables -L -n | grep 3306

# 网络路由检查
traceroute 112.123.45.67 -p 3306

关键补充说明

  1. 密码策略

    • 默认需包含大小写字母、数字、特殊字符(8位以上)
    • 查看策略:SHOW VARIABLES LIKE 'validate_password%';
  2. 安全建议

    • 避免使用 root 远程登录
    • 生产环境建议限制安全组源IP
    • 定期执行 mysql_secure_installation
  3. 日志位置

    • 错误日志:/var/log/mysqld.log
    • 配置文件:/etc/my.cnf