奋斗
努力

在CentOS或Ubuntu云服务器上安装MySQL的完整步骤是什么?

云计算

在 CentOS 或 Ubuntu 云服务器上安装 MySQL 的完整步骤需根据发行版版本官方推荐方式选择(MySQL 官方推荐使用 Oracle 提供的 APT/YUM 仓库安装最新稳定版,而非系统默认仓库中的旧版 mariadb)。以下是 2024 年推荐的生产级安装方案,兼顾安全性、版本可控性与最佳实践:


✅ 前提条件

  • 已登录云服务器(SSH),具备 sudo 权限
  • 确保系统已更新:

    # Ubuntu
    sudo apt update && sudo apt upgrade -y
    
    # CentOS 7/8/9(以 CentOS 9 Stream 为例)
    sudo dnf update -y  # CentOS 8+/9
    # 或 CentOS 7:
    sudo yum update -y
  • 关闭或配置防火墙(如 ufw/firewalld)——生产环境建议仅开放 3306(或自定义端口)且限制 IP
  • 确保云服务商安全组(Security Group)已放行 MySQL 端口(默认 3306)

🔧 一、Ubuntu(22.04 / 24.04 LTS)安装 MySQL 8.0/8.4(推荐)

✅ 使用 MySQL 官方 APT 仓库(获取最新稳定版,如 8.4.0+),避免 Ubuntu 默认的 mariadb-server

步骤 1:下载并安装 MySQL APT 配置工具

cd /tmp
# 下载最新 MySQL APT 配置包(以 8.4 为例;请访问 https://dev.mysql.com/downloads/repo/apt/ 获取最新链接)
wget https://dev.mysql.com/get/mysql-apt-config_8.4.0-1ubuntu22.04_all.deb
# 验证签名(可选但强烈推荐)
wget https://dev.mysql.com/downloads/repo/apt/KEYS
gpg --dearmor < KEYS > /usr/share/keyrings/mysql-apt-keyring.gpg

# 安装配置包(安装时会弹出交互界面 → 选择 MySQL Server & Cluster → 按 Tab → Enter 确认)
sudo dpkg -i mysql-apt-config_*.deb
# 若报依赖错误,运行:
sudo apt --fix-broken install -y

步骤 2:更新源并安装 MySQL Server

sudo apt update
sudo apt install mysql-server -y

✅ 安装过程会自动启动服务并生成 root 密码(记录终端输出中的临时密码!形如:A temporary password is generated for root@localhost: xxxxxx

步骤 3:运行安全初始化(必须!)

sudo mysql_secure_installation

按提示操作(推荐选项):

  • Enter current password for root (enter for none): ✅ 粘贴上一步的临时密码
  • Switch to unix_socket authentication? ❌ No(保持默认认证方式)
  • New password for root: ✅ 设置强密码(至少 8 位,含大小写字母+数字+符号)
  • Remove anonymous users? ✅ Y
  • Disallow root login remotely? ✅ Y(生产环境禁止 root 远程登录)
  • Remove test database? ✅ Y
  • Reload privilege tables? ✅ Y

步骤 4:验证与基础配置

# 登录验证
sudo mysql -u root -p

# 查看版本
SELECT VERSION();

# 退出
EXIT;

✅ 可选:配置远程访问(谨慎!仅限必要场景)

sudo mysql -u root -p
-- 创建专用管理用户(替换 'myadmin' 和 'StrongPass123!')
CREATE USER 'myadmin'@'%' IDENTIFIED BY 'StrongPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

-- 修改绑定地址(编辑配置文件)
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 找到 bind-address = 127.0.0.1 → 改为 bind-address = 0.0.0.0
# 或更安全:bind-address = 具体内网IP(如 10.0.0.5)

# 重启服务
sudo systemctl restart mysql

⚠️ 同时务必在云安全组 + 服务器防火墙中仅放行可信 IP 访问 3306 端口!


🔧 二、CentOS / Rocky Linux / AlmaLinux(8.x / 9.x)安装 MySQL 8.0/8.4

✅ 使用 MySQL 官方 YUM 仓库(替代系统默认的 mariadb)

步骤 1:添加 MySQL YUM 仓库

# 下载 MySQL YUM repo(以 CentOS 9 为例;其他版本见官网)
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm -y

# 启用 MySQL 8.4(若需 8.0 则启用 mysql80-community)
sudo dnf config-manager --enable mysql84-community  # CentOS 8/9
# CentOS 7 使用:
# sudo yum-config-manager --enable mysql84-community

步骤 2:安装 MySQL Server

# 禁用默认的 mariadb 模块(CentOS 8+/9)
sudo dnf module reset mysql
sudo dnf module enable mysql:84

sudo dnf install mysql-community-server -y

步骤 3:启动并启用开机自启

sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo systemctl status mysqld  # 确认 active (running)

步骤 4:获取临时 root 密码 & 安全初始化

# 查看临时密码(首次启动生成)
sudo grep 'temporary password' /var/log/mysqld.log

# 运行安全脚本
sudo mysql_secure_installation

操作同 Ubuntu 步骤 3(输入临时密码 → 设新密码 → Y/Y/Y/Y)

步骤 5:防火墙放行(如启用 firewalld)

sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

🛡️ 三、关键安全加固(所有系统必做!)

项目 命令/操作
禁用符号链接(防文件读取漏洞) 编辑 /etc/my.cnf,在 [mysqld] 下添加:
symbolic-links=0
设置严格 SQL 模式 [mysqld] 下添加:
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
限制错误日志权限 sudo chown mysql:mysql /var/log/mysql/error.log
定期备份 使用 mysqldump + cronmysqlpump(8.0+)
启用 SSL(生产必备) sudo mysql_ssl_rsa_setup --datadir=/var/lib/mysql,然后配置 require_secure_transport=ON

🚀 四、连接测试(本地 & 远程)

本地连接:

mysql -u myadmin -p -h 127.0.0.1

远程连接(从本地电脑):

mysql -u myadmin -p -h your-server-public-ip

💡 若失败,请检查:

  • 云安全组是否放行 3306?
  • 服务器防火墙(ufw/firewalld)是否放行?
  • MySQL 是否监听 0.0.0.0(非仅 127.0.0.1)?
  • 用户 'myadmin'@'%' 是否存在且权限正确?

❗ 常见问题速查

现象 解决方案
Can't connect to local MySQL server sudo systemctl status mysqldsudo systemctl start mysqld
Access denied for user 'root'@'localhost' 用临时密码登录,或重置密码(官方重置指南)
Authentication plugin 'caching_sha2_password' cannot be loaded 客户端不兼容 → 创建用户时指定插件:
CREATE USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';
占用内存过高 编辑 /etc/my.cnf 调整 innodb_buffer_pool_size(建议设为物理内存 50~75%)

总结推荐组合 系统 推荐方式 版本 备注
Ubuntu 22.04/24.04 MySQL 官方 APT 仓库 8.4 LTS 最新特性 + 官方支持
CentOS 8/9/Rocky 9 MySQL 官方 YUM 仓库 8.4 替代 mariadb,功能完整
CentOS 7(EOL) MySQL YUM 仓库 8.0(最后支持版) 注意 CentOS 7 已停止维护

📌 重要提醒

  • 生产环境禁止使用 root 远程登录,务必创建最小权限专用用户;
  • 定期更新 MySQL(sudo apt upgrade mysql-server / sudo dnf update mysql-community-server);
  • 敏感数据务必加密(TDE 表空间加密、列加密等);
  • 日志审计开启:log_error = /var/log/mysql/error.log + general_log = OFF(仅调试开)。

需要我为你生成 一键安装脚本备份脚本SSL 配置详解Docker 部署方案,欢迎随时提出! 😊

未经允许不得转载:云服务器 » 在CentOS或Ubuntu云服务器上安装MySQL的完整步骤是什么?