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

在新购的 Linux 云服务器上部署 MySQL 数据库,通常分为 安装、初始化、安全加固、配置优化 四个阶段。以下以主流的 Ubuntu/Debian 和 CentOS/RHEL 为例,提供详细步骤:


一、准备工作

  1. 登录服务器

    ssh root@your_server_ip
  2. 更新系统包

    • Ubuntu/Debian:
      sudo apt update && sudo apt upgrade -y
    • CentOS/RHEL (7/8):
      sudo yum update -y
      # 或 dnf update -y(CentOS 8+)
  3. 确认云服务商防火墙规则

    • 在云平台控制台(如阿里云、腾讯云、AWS)放行 TCP 3306 端口(仅对必要 IP 开放更安全)。
    • 本地临时测试可先关闭防火墙(生产环境不建议):
      sudo ufw disable          # Ubuntu
      sudo systemctl stop firewalld  # CentOS

二、安装 MySQL

✅ 方案 A:使用官方 YUM/APT 源(推荐,版本较新)

Ubuntu/Debian

# 添加 MySQL APT 仓库
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb
# 选择版本(如 MySQL 8.0),按空格选中后回车

sudo apt update
sudo apt install mysql-server -y

CentOS/RHEL

# 下载并安装 MySQL YUM 仓库
wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
sudo rpm -ivh mysql80-community-release-el8-1.noarch.rpm

# 安装 MySQL Server(默认 8.0)
sudo yum install mysql-server -y
# 如需其他版本,编辑 /etc/yum.repos.d/mysql-community.repo 调整

💡 提示:也可用 mysql-community-server 替代 mysql-server 避免冲突。


✅ 方案 B:使用发行版自带源(简单但版本可能旧)

# Ubuntu
sudo apt install mysql-server -y

# CentOS 7(MariaDB 默认,若需 MySQL 请换方案 A)
sudo yum install mysql-server -y

三、启动与服务管理

# 启动服务
sudo systemctl start mysqld      # CentOS/RHEL
sudo systemctl start mysql       # Ubuntu/Debian

# 设置开机自启
sudo systemctl enable mysqld     # 或 mysql

✅ 检查状态:

sudo systemctl status mysqld

四、初始安全设置(关键!)

运行安全脚本(交互式):

sudo mysql_secure_installation

按提示操作:

  • [Y/n] 是否启用 validate_password?→ 建议 n(除非有强密码策略需求)
  • 设置 root 密码 → 务必设强密码
  • 删除匿名用户?→ Y
  • 禁止 root 远程登录?→ Y
  • 删除 test 库?→ Y
  • 重载权限表?→ Y

🔐 更安全的做法:手动创建专用管理员账号,而非直接用 root:

sudo mysql -u root -p
-- 进入后执行:
CREATE USER 'admin'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

⚠️ 注意:% 表示允许任意 IP 连接;生产环境应替换为具体 IP 或内网段(如 10.0.0.%)。


五、配置远程访问(可选但需谨慎)

  1. 修改绑定地址
    编辑配置文件:

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf    # Ubuntu
    sudo nano /etc/my.cnf                           # CentOS(路径可能不同)

    找到 [mysqld] 部分,注释掉或修改:

    # bind-address = 127.0.0.1
    bind-address = 0.0.0.0   # 监听所有网卡(慎用!)
  2. 重启服务

    sudo systemctl restart mysqld
  3. 防火墙放行 3306

    sudo ufw allow 3306/tcp          # Ubuntu
    sudo firewall-cmd --permanent --add-port=3306/tcp
    sudo firewall-cmd --reload       # CentOS
  4. 验证远程连接
    从本机或其他机器测试:

    mysql -h your_server_ip -P 3306 -u admin -p

六、基础优化建议(生产环境)

项目 建议
字符集 确保 UTF8MB4:
[client] + [mysqld] 中加 default-character-set = utf8mb4
连接数 根据业务调整 max_connections(默认 151,高并发可提至 500~1000)
缓冲池 InnoDB 缓冲池设为物理内存的 50%~70%:
innodb_buffer_pool_size = 4G(示例)
慢查询日志 开启辅助调优:
slow_query_log = 1
long_query_time = 2
备份策略 定期 mysqldump 或使用 Percona XtraBackup

示例 /etc/mysql/conf.d/custom.cnf:

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
max_connections = 300
innodb_buffer_pool_size = 2G
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
log_queries_not_using_indexes = 1

七、常见问题排查

问题 解决思路
Can't connect to MySQL server 检查服务状态、防火墙、bind-address、端口监听 (netstat -tlnp | grep 3306)
Access denied for user 'root'@'localhost' 尝试 sudo mysql -u root -p 跳过密码;或重置 root 密码
中文乱码 确认客户端、数据库、表字段均为 utf8mb4
磁盘空间不足 清理 binlog:PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);

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

  • ✅ 使用 SSL/TLS 加密连接
  • ✅ 启用 审计日志(如 MySQL Enterprise Audit 或第三方工具)
  • ✅ 配置 主从复制 实现高可用
  • ✅ 使用 监控工具(Prometheus + Grafana + mysqld_exporter)
  • ✅ 定期 备份 + 恢复演练

需要我为你提供:

  • 📜 自动化部署脚本(Ansible/Bash)
  • 🛠️ Docker 方式快速部署 MySQL
  • 🔐 如何生成 SSL 证书并启用加密连接
  • 📊 常用性能诊断 SQL 命令清单

欢迎告诉我你的具体场景(如:开发测试 / 生产核心库 / 高并发读写),我可进一步定制方案。

未经允许不得转载:云计算导航 » 新购的Linux云服务器如何部署MySQL数据库?