新购的Linux云服务器如何部署MySQL数据库?

在新购的 Linux 云服务器(如 Ubuntu/CentOS)上部署 MySQL 数据库,需兼顾安全性、稳定性与生产可用性。以下是清晰、分步、符合最佳实践的部署指南(以 Ubuntu 22.04/24.04 为主,附 CentOS/RHEL 9 差异说明):


✅ 一、前期准备(重要!)

  1. 登录服务器

    ssh -i your-key.pem ubuntu@your-server-ip  # Ubuntu 默认用户为 ubuntu
    # 或 root@...(若允许 root 登录)
  2. 更新系统 & 安装基础工具

    # Ubuntu/Debian
    sudo apt update && sudo apt upgrade -y
    sudo apt install -y curl wget gnupg2 lsb-release software-properties-common
    
    # CentOS/RHEL 9(使用 dnf)
    sudo dnf update -y
    sudo dnf install -y curl wget gnupg2
  3. 配置防火墙(强烈建议启用)

    # Ubuntu (UFW)
    sudo ufw allow OpenSSH
    sudo ufw enable
    # 后续再开放 MySQL 端口(仅限必要 IP,非全开放!)
    # sudo ufw allow from 192.168.1.100 to any port 3306  # 示例:只允特定IP访问
    
    # CentOS/RHEL 9 (firewalld)
    sudo firewall-cmd --permanent --add-service=ssh
    sudo firewall-cmd --reload

✅ 二、安装 MySQL(推荐官方 APT/YUM 源,非系统默认旧版)

🔹 方式 1:安装 MySQL 官方最新稳定版(推荐 ✅)

✨ 优势:版本新(如 8.4+)、安全更新及时、支持 caching_sha2_password、TLS 1.3 等。

# 1. 下载并安装 MySQL APT 仓库配置包(Ubuntu/Debian)
curl -OL 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.4)→ OK

sudo apt update
sudo apt install -y mysql-server
# CentOS/RHEL 9(使用 MySQL YUM 仓库)
sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el9-5.noarch.rpm
sudo dnf config-manager --disable mysql57-community  # 禁用旧版
sudo dnf config-manager --enable mysql80-community
sudo dnf install -y mysql-community-server

❌ 不推荐:sudo apt install mysql-server(Ubuntu 自带 8.0.x 但可能较旧且配置简陋)


✅ 三、初始化与安全加固(关键步骤!)

  1. 启动服务并设开机自启

    sudo systemctl enable mysql
    sudo systemctl start mysql
    sudo systemctl status mysql  # ✅ 确认 active (running)
  2. 运行安全脚本(必须执行!)

    sudo mysql_secure_installation

    按提示操作:

    • 设置 root 密码(✅ 强密码,记录!)
    • 移除匿名用户? → Y
    • 禁止 root 远程登录? → Y(生产环境必须!)
    • 删除 test 数据库? → Y
    • 重新加载权限表? → Y
  3. 验证登录(本地)

    sudo mysql -u root -p  # 输入刚设的 root 密码
    # 成功进入后退出:
    mysql> exit;

✅ 四、配置优化(生产必备)

1. 编辑 MySQL 配置文件(/etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/my.cnf)

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

添加/修改以下关键项(根据服务器内存调整):

[mysqld]
# 基础安全
bind-address = 127.0.0.1          # ❗禁止网络监听(除非明确需要远程)
# 若需远程访问(不推荐),改为 bind-address = 0.0.0.0 并严格限制防火墙!

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

# 性能调优(示例:4GB 内存服务器)
innodb_buffer_pool_size = 1G      # 推荐设为物理内存 50%~75%
innodb_log_file_size = 256M
max_connections = 200
wait_timeout = 300
interactive_timeout = 300

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

2. 创建专用数据库与用户(❌ 禁止用 root 连接应用!)

sudo mysql -u root -p
-- 创建数据库(UTF8MB4 支持 emoji)
CREATE DATABASE myapp DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 创建专用用户(仅限本地连接)
CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'StrongPass123!';

-- 授予最小必要权限
GRANT SELECT, INSERT, UPDATE, DELETE ON myapp.* TO 'myapp_user'@'localhost';

-- 刷新权限
FLUSH PRIVILEGES;

-- ✅ 验证用户
SELECT User, Host FROM mysql.user WHERE User = 'myapp_user';
EXIT;

💡 如需远程访问(例如本地开发机连接云服务器):

CREATE USER 'myapp_user'@'192.168.1.100' IDENTIFIED BY 'StrongPass123!';
GRANT ... ON myapp.* TO 'myapp_user'@'192.168.1.100';

并务必在防火墙中仅放行该 IP 的 3306 端口!


✅ 五、验证与测试

  1. 用新用户登录测试

    mysql -u myapp_user -p -D myapp
    # 输入密码,成功进入即 OK
  2. 创建测试表

    CREATE TABLE test (id INT PRIMARY KEY AUTO_INCREMENT, msg VARCHAR(100));
    INSERT INTO test (msg) VALUES ('Hello MySQL on Cloud!');
    SELECT * FROM test;
  3. 检查错误日志

    sudo tail -f /var/log/mysql/error.log  # 查看启动/报错信息

✅ 六、进阶建议(生产环境必做)

项目 操作
备份策略 配置 mysqldump + cron 定时备份,或使用 mysqlbackup/Percona XtraBackup
监控 部署 Prometheus + mysqld_exporter 或使用云厂商监控(如阿里云云监控)
SSL/TLS 启用强制加密连接(require_secure_transport = ON),生成证书并配置
主从复制 高可用场景下配置读写分离(需额外服务器)
应用连接 应用配置中使用 ?charset=utf8mb4&parseTime=true&loc=Local(Go/Java 等)

🚫 常见错误排查

现象 解决方案
Can't connect to local MySQL server 检查 systemctl status mysql;确认 bind-address 和 socket 路径
Access denied for user 'root'@'localhost' 使用 sudo mysql 免密登录,重置密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'NewPass';
中文乱码 确认 my.cnf 中 character-set-server=utf8mb4 + 表/列也设为 utf8mb4
远程无法连接 检查:① bind-address=0.0.0.0 ② 防火墙放行 3306 ③ 用户 Host 是 % 或具体 IP ④ 云服务器安全组(如阿里云/腾讯云控制台)开放 3306

✅ 完成! 你的 MySQL 已安全、高效地运行在云服务器上。
📌 最后提醒:

  • 永远不要在生产环境暴露 root 远程访问
  • 定期更新 MySQL 和操作系统
  • 敏感数据加密存储,备份离线保存

需要我为你生成:

  • ✅ 自动化部署脚本(Bash)
  • ✅ Docker Compose 部署方案
  • ✅ 备份脚本 + 定时任务示例
  • ✅ SSL 配置详细步骤

欢迎随时告诉我 👇

未经允许不得转载:CLOUD技术博 » 新购的Linux云服务器如何部署MySQL数据库?