新购Linux云服务器后,如何在上面部署MySQL数据库?

在新购的 Linux 云服务器上部署 MySQL 数据库,推荐使用 MySQL 官方 APT/YUM 仓库安装(推荐)Docker 方式(轻量、隔离性好)。以下是详细、安全、生产就绪的部署指南(以 Ubuntu 22.04/24.04 或 CentOS 7/8/9 为例,兼顾通用性):


✅ 一、前期准备(所有系统必做)

  1. 更新系统并升级

    # Ubuntu/Debian
    sudo apt update && sudo apt upgrade -y
    
    # CentOS/RHEL/Rocky/AlmaLinux
    sudo dnf update -y        # RHEL 8+/CentOS 8+
    # 或 sudo yum update -y   # CentOS 7(已 EOL,建议升级)
  2. 配置防火墙(开放 3306 端口)

    # Ubuntu (UFW)
    sudo ufw allow OpenSSH
    sudo ufw allow 3306
    sudo ufw enable
    
    # CentOS/RHEL (firewalld)
    sudo firewall-cmd --permanent --add-service=mysql
    sudo firewall-cmd --permanent --add-port=3306/tcp
    sudo firewall-cmd --reload
  3. 确保时区正确(避免日志/备份时间混乱)

    sudo timedatectl set-timezone Asia/Shanghai  # 根据实际调整
    sudo timedatectl status

✅ 二、部署 MySQL(推荐方式:官方仓库安装)

⚠️ 不建议用系统默认包(如 apt install mysql-server),Ubuntu 默认是 MariaDB;CentOS 8+ 默认无 MySQL。应使用 MySQL 官方 APT/YUM 源 获取最新稳定版(如 MySQL 8.0.x)。

▶ 方法 1:Ubuntu/Debian(官方 APT)

# 1. 下载并安装 MySQL APT 配置工具(获取最新源)
wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb
# → 安装时选择 "MySQL Server & Cluster" → 选 8.0(回车确认)→ OK

# 2. 更新源并安装
sudo apt update
sudo apt install mysql-server -y

# 3. 启动并设为开机自启
sudo systemctl enable mysql
sudo systemctl start mysql

▶ 方法 2:RHEL/CentOS/Rocky/AlmaLinux(官方 YUM/DNF)

# 1. 下载并安装 MySQL YUM 仓库
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el$(rpm -E '%{rhel}')-1.noarch.rpm -y

# 2. (可选)禁用其他 MySQL 模块(避免冲突)
sudo dnf module reset mysql
sudo dnf module enable mysql:8.0

# 3. 安装 MySQL Server
sudo dnf install mysql-community-server -y

# 4. 启动并开机自启
sudo systemctl enable mysqld
sudo systemctl start mysqld

# 5. 查看初始 root 密码(仅首次启动生成)
sudo grep 'temporary password' /var/log/mysqld.log  # CentOS/RHEL
# Ubuntu 日志路径:/var/log/mysql/error.log(搜索 "A temporary password")

✅ 三、安全初始化与基础配置

运行安全脚本(强烈建议!):

sudo mysql_secure_installation

按提示操作:

  • 输入当前 root 密码(首次运行时填上一步查到的临时密码)
  • 更改 root 密码(设为强密码,记录保存)
  • 移除匿名用户
  • 禁止 root 远程登录(生产环境建议仅本地访问,或后续配置白名单)
  • 删除 test 数据库及权限
  • 重新加载权限表

💡 若需远程连接(不推荐直接暴露 3306 到公网),请见【进阶配置】部分。


✅ 四、验证安装

# 登录 MySQL(使用新密码)
mysql -u root -p

# 在 MySQL 内执行:
SELECT VERSION();                    -- 查看版本
SHOW VARIABLES LIKE 'character_set%'; -- 检查字符集(建议 utf8mb4)
EXIT;

✅ 正常输出即部署成功!


✅ 五、(可选但推荐)基础优化配置

编辑 MySQL 配置文件:

# Ubuntu/Debian
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# CentOS/RHEL
sudo nano /etc/my.cnf

添加/修改以下内容(根据服务器内存调整,例如 2GB 内存):

[mysqld]
# 基础设置
bind-address = 127.0.0.1      # 仅监听本地(安全!)
max_connections = 200
timezone = '+08:00'

# 字符集(关键!避免中文乱码)
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# InnoDB 优化(SSD 推荐)
innodb_buffer_pool_size = 512M    # ≈ 总内存 25%~50%
innodb_log_file_size = 128M
innodb_flush_log_at_trx_commit = 1  # 保证 ACID,生产环境勿改 0

# 日志(便于排错)
log_error = /var/log/mysql/error.log
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

重启生效:

sudo systemctl restart mysql

✅ 六、创建应用数据库与用户(示例)

mysql -u root -p
-- 创建数据库(指定字符集)
CREATE DATABASE myapp DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 创建专用用户(禁止 root 远程/应用直连!)
CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'StrongPass123!';

-- 授权(最小权限原则)
GRANT SELECT, INSERT, UPDATE, DELETE ON myapp.* TO 'myapp_user'@'localhost';

-- 刷新权限
FLUSH PRIVILEGES;

-- 退出
EXIT;

🔐 进阶安全建议(生产环境必做)

项目 建议
远程访问 ❌ 禁止直接开放 3306 到公网;✅ 使用 SSH 隧道 / X_X / 云厂商安全组限制 IP 白名单
备份 ✅ 配置每日 mysqldump + cron + 上传至对象存储(如 OSS/S3)
监控 ✅ 部署 mysql-exporter + Prometheus + Grafana
SSL ✅ 启用 TLS(生成证书,配置 require_secure_transport=ON
定期更新 ✅ 订阅 MySQL 安全公告,及时升级补丁

🐳 备选方案:Docker 部署(适合测试/快速验证)

# 拉取官方镜像(指定 8.0 版本更稳定)
docker run -d 
  --name mysql-prod 
  -p 3306:3306 
  -e MYSQL_ROOT_PASSWORD=MyRoot123! 
  -e MYSQL_DATABASE=myapp 
  -e MYSQL_USER=myapp_user 
  -e MYSQL_PASSWORD=MyAppPass123! 
  -v /data/mysql:/var/lib/mysql 
  -v /etc/localtime:/etc/localtime:ro 
  --restart=unless-stopped 
  -d mysql:8.0

# 进入容器配置(如需调优)
docker exec -it mysql-prod mysql -uroot -p

✅ 优势:隔离、易迁移、版本可控;⚠️ 注意数据卷持久化和宿主机时区同步。


❌ 常见错误排查

现象 解决方法
Can't connect to local MySQL server 检查 systemctl status mysqlnetstat -tlnp | grep :3306、SELinux(CentOS)是否阻止:sudo setsebool -P mysqld_connect_any on
中文乱码 确认 my.cnfcharacter-set-server=utf8mb4 + 应用连接字符串加 ?charset=utf8mb4
远程无法连接 检查 bind-address 是否为 0.0.0.0(不推荐)、防火墙、云服务器安全组、MySQL 用户 host 是否为 '%'(谨慎授权)

如需我为你:

  • ✅ 生成完整的 my.cnf 优化模板(按 1C2G / 2C4G / 4C8G 自动适配)
  • ✅ 编写自动备份脚本(含压缩、保留7天、微信/邮件通知)
  • ✅ 配置 SSL 加密连接教程
  • ✅ Docker Compose 部署(含 phpMyAdmin 可视化)

欢迎随时告诉我你的服务器配置(CPU/内存/系统)和具体需求,我会为你定制化输出 👇

祝你部署顺利,数据库稳如磐石! 🚀

未经允许不得转载:云知道CLOUD » 新购Linux云服务器后,如何在上面部署MySQL数据库?