走啊走
加油

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

服务器价格表

在新购的 Linux 云服务器上部署 MySQL 数据库,建议采用官方推荐方式(MySQL APT/YUM 仓库)安装最新稳定版(如 MySQL 8.0),兼顾安全性、功能完整性和长期维护性。以下是详细、安全、生产就绪的部署步骤(以 Ubuntu 22.04/24.04 或 CentOS 7/8/9 为例,含关键注意事项):


✅ 一、前期准备(务必执行)

# 1. 更新系统(Ubuntu/Debian)
sudo apt update && sudo apt upgrade -y

# 或 CentOS/RHEL(根据版本选择)
sudo yum update -y          # CentOS 7
sudo dnf update -y          # CentOS 8+/Rocky/AlmaLinux

# 2. 关闭或配置防火墙(按需开放3306端口)
# Ubuntu (UFW)
sudo ufw allow OpenSSH
sudo ufw allow 3306          # 仅限信任IP更安全(见下方)
sudo ufw enable

# CentOS (firewalld)
sudo firewall-cmd --permanent --add-service=mysql
sudo firewall-cmd --reload

# 🔒 强烈建议:不要直接开放3306给公网!
# ✅ 正确做法:仅允许跳板机/IP白名单(例如)
sudo ufw allow from 192.168.1.100 to any port 3306
# 或使用云平台安全组(更推荐!)→ 在阿里云/腾讯云/AWS控制台设置入站规则,仅允许可信IP访问3306。

✅ 二、安装 MySQL(推荐官方仓库,非系统默认 mariadb)

▶ Ubuntu/Debian(以 22.04 为例)

# 1. 下载并安装 MySQL APT 配置包(获取最新版)
cd /tmp
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" → 选择 "mysql-8.0" → OK → Apply

sudo apt update
sudo apt install mysql-server -y

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

▶ CentOS/RHEL/Rocky/AlmaLinux

# 1. 添加 MySQL YUM 仓库
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el$(rpm -E '%{rhel}')-1.noarch.rpm

# 2. 确认启用 mysql80 模块(禁用其他版本)
sudo dnf module reset mysql
sudo dnf module enable mysql:8.0

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

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

💡 提示:首次启动后,MySQL 会自动生成临时 root 密码(Ubuntu 查 /var/log/mysql/error.log;CentOS 查 /var/log/mysqld.log):

sudo grep 'temporary password' /var/log/mysqld.log  # CentOS
sudo grep 'temporary password' /var/log/mysql/error.log  # Ubuntu

✅ 三、安全初始化(关键!必须执行)

sudo mysql_secure_installation

按提示操作(强烈建议):

  • ✅ 设置强 root 密码(至少8位,含大小写字母+数字+符号)
  • ❌ 删除匿名用户 → Y
  • ❌ 禁用远程 root 登录 → Y(保持仅 localhost 可登录)
  • ✅ 删除 test 数据库及访问权限 → Y
  • ✅ 重载权限表 → Y

⚠️ 注意:此命令会禁用 root@% 远程登录,符合最小权限原则。


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

1. 编辑主配置文件(路径因发行版而异)

# Ubuntu: /etc/mysql/mysql.conf.d/mysqld.cnf
# CentOS: /etc/my.cnf 或 /etc/my.cnf.d/mysql-server.cnf
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

2. 关键配置项(添加/修改以下内容到 [mysqld] 段):

[mysqld]
# 基础安全
bind-address = 127.0.0.1        # ❗仅监听本地(若需内网其他机器访问,改为内网IP如 10.0.0.5)
skip-name-resolve               # 提速连接,禁用DNS反查

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

# 日志与性能(可选但推荐)
log-error = /var/log/mysql/error.log
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

# 内存优化(根据服务器内存调整,示例为4GB内存)
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M

# 其他加固
default_authentication_plugin = mysql_native_password  # 兼容旧客户端(MySQL 8.0+ 默认caching_sha2_password)

3. 创建日志目录并授权(如启用慢日志)

sudo mkdir -p /var/log/mysql
sudo chown mysql:mysql /var/log/mysql
sudo touch /var/log/mysql/{error,slow}.log
sudo chown mysql:mysql /var/log/mysql/*.log

4. 重启服务生效

sudo systemctl restart mysql

✅ 五、创建应用数据库与用户(禁止直接用 root)

# 登录 MySQL(使用刚设置的 root 密码)
sudo mysql -u root -p

# 在 MySQL shell 中执行:
mysql> CREATE DATABASE myapp DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql> CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'StrongPass123!';
mysql> GRANT ALL PRIVILEGES ON myapp.* TO 'myapp_user'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

✅ 若应用需远程访问(不推荐公网):

CREATE USER 'myapp_user'@'10.0.0.%' IDENTIFIED BY 'StrongPass123!';  -- 仅限内网段
GRANT SELECT,INSERT,UPDATE,DELETE ON myapp.* TO 'myapp_user'@'10.0.0.%';

🔐 再次强调:绝不在生产环境开放 @'%' 或公网 3306 端口!


✅ 六、验证与连通性测试

# 1. 本地连接测试
mysql -u myapp_user -p -D myapp

# 2. 检查字符集
mysql> SHOW VARIABLES LIKE 'character_set%';
mysql> SHOW VARIABLES LIKE 'collation%';

# 3. 查看状态
sudo systemctl status mysql

🚨 重要安全提醒(生产红线)

风险点 正确做法
root 远程登录 mysql_secure_installation 已禁用,切勿手动开启 root@'%'
弱密码 使用 VALIDATE_PASSWORD 插件强制策略(可选启用)
公网暴露 3306 ✅ 云平台安全组只放行可信 IP
✅ 应用与 DB 同 VPC 内网通信
❌ 禁止安全组全开放 0.0.0.0/0
未备份 立即配置定时备份(mysqldump + cron + 对象存储)
未监控 部署 mysql-exporter + Prometheus + Grafana 监控连接数、慢查询等

✅ 附:快速备份脚本(保存为 /root/backup_mysql.sh

#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup/mysql"
mkdir -p $BACKUP_DIR
mysqldump -u root -p'YourRootPass' --all-databases --single-transaction | gzip > $BACKUP_DIR/full_$DATE.sql.gz
find $BACKUP_DIR -name "full_*.sql.gz" -mtime +7 -delete
chmod +x /root/backup_mysql.sh
# 添加到 crontab 每天2点执行
echo "0 2 * * * /root/backup_mysql.sh" | sudo crontab -

完成!
你现在拥有一套安全、稳定、可维护的 MySQL 生产环境。后续可根据业务需求:

  • 配置主从复制(高可用)
  • 启用 SSL 加密连接
  • 使用 ProxySQL 或 Vitess 分库分表
  • 迁移至云数据库(如阿里云 RDS)进一步减负

需要我为你生成 一键部署脚本主从配置指南Docker 方式部署方案,欢迎随时提出! 🐘