速卖通素材
奋斗

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

服务器

在新购的 Linux 云服务器上部署 MySQL 数据库,通常有几种主流方式。以下是最常用、最推荐的方式(以 CentOS/RHEL 和 Ubuntu/Debian 为例),包括安装、配置、安全设置和远程访问开启。


✅ 一、选择你的 Linux 发行版

不同发行版的包管理器不同:

  • CentOS / RHEL / Alibaba Cloud Linux → 使用 yumdnf
  • Ubuntu / Debian → 使用 apt

📦 二、安装 MySQL

1. CentOS / RHEL / Alibaba Cloud Linux

# 更新系统
sudo yum update -y

# 安装 MySQL Server(CentOS 8+ 默认使用 mysql-community-server)
sudo yum install mysql-server -y

# 启动并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld

# 检查状态
sudo systemctl status mysqld

💡 注意:CentOS 7 可能使用 mariadb 作为默认 MySQL 兼容版本。如需官方 MySQL,需先添加 MySQL Yum Repository。

添加 MySQL Yum Repository(CentOS 7 示例):

sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo yum install mysql-community-server -y

2. Ubuntu / Debian

# 更新软件源
sudo apt update

# 安装 MySQL Server
sudo apt install mysql-server -y

# 启动并设置开机自启
sudo systemctl start mysql
sudo systemctl enable mysql

# 检查状态
sudo systemctl status mysql

🔐 三、初始化安全设置

MySQL 安装后建议运行安全脚本:

sudo mysql_secure_installation

按提示操作:

  1. VALIDATE PASSWORD COMPONENT:是否启用密码强度验证?(建议选 Y)
  2. Change root password?:设置 root 密码(强烈建议设置)
  3. Remove anonymous users?:删除匿名账户 → Y
  4. Disallow root login remotely?:禁止 root 远程登录 → Y(稍后手动创建专用用户)
  5. Remove test database?:删除测试数据库 → Y
  6. Reload privilege tables now?:立即重新加载权限表 → Y

👤 四、创建专用数据库用户(推荐)

不要直接用 root 进行日常连接!

sudo mysql -u root -p

进入 MySQL 命令行后执行:

-- 创建新用户(替换 'myuser' 和 'mypassword')
CREATE USER 'myuser'@'%' IDENTIFIED BY 'StrongPassword123!';

-- 授予所有权限(或按需限制)
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%';

-- 刷新权限
FLUSH PRIVILEGES;

-- 退出
EXIT;

⚠️ 'myuser'@'%' 表示允许从任意 IP 连接。生产环境中建议指定具体 IP,如 'myuser'@'192.168.1.100'


🌐 五、开放防火墙端口(3306)

1. 云服务器安全组(必须做!)

登录云服务商控制台(阿里云、腾讯云、AWS 等):

  • 找到你的实例 → 安全组规则
  • 添加入方向规则:
    • 协议:TCP
    • 端口范围:3306
    • 来源:建议限制为你的应用服务器 IP(如 192.168.1.100/32),切勿设为 0.0.0.0/0

2. 系统防火墙(如 firewalld 或 ufw)

CentOS(firewalld):

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

Ubuntu(ufw):

sudo ufw allow 3306/tcp
sudo ufw reload

🛠 六、配置 MySQL 允许远程访问(可选但常见)

编辑 MySQL 配置文件:

# CentOS
sudo vi /etc/my.cnf.d/mysql-server.cnf

# Ubuntu
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

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

# bind-address = 127.0.0.1   ← 注释掉这行,或改为 0.0.0.0
bind-address = 0.0.0.0        ← 允许监听所有网卡

重启 MySQL:

sudo systemctl restart mysqld    # CentOS
sudo systemctl restart mysql     # Ubuntu

✅ 七、测试连接

从另一台机器测试连接:

mysql -h <服务器公网IP> -P 3306 -u myuser -p

输入密码后若能成功进入 MySQL 命令行,说明部署成功!


🧪 八、(可选)创建测试数据库

CREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON myapp_db.* TO 'myuser'@'%';
FLUSH PRIVILEGES;

📝 九、最佳实践建议

项目 建议
密码策略 使用强密码,定期更换
最小权限原则 不为应用分配 ALL PRIVILEGES ON *.*,只授予必要库权限
备份策略 定期使用 mysqldump 或云厂商备份功能
监控日志 开启慢查询日志,监控性能
更新补丁 定期 yum updateapt upgrade 保持安全
禁用 root 远程登录 始终通过专用用户连接

❓ 常见问题排查

  1. 连接被拒绝?

    • 检查安全组是否开放 3306
    • 检查 bind-address 是否为 0.0.0.0
    • 检查用户主机权限('myuser'@'%' vs 'myuser'@'localhost'
  2. 忘记 root 密码?

    sudo systemctl stop mysqld
    sudo mysqld_safe --skip-grant-tables &
    mysql -u root
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
    EXIT;
    sudo killall mysqld
    sudo systemctl start mysqld
  3. 中文乱码?
    确保客户端和服务端字符集一致,推荐 utf8mb4

    [mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci

🎯 总结流程图

购买云服务器 → 安装 MySQL → 安全初始化 → 创建专用用户 → 开放安全组+防火墙 → 配置远程访问 → 测试连接 → 创建业务数据库

按照以上步骤,你可以在几分钟内完成 MySQL 的安全部署。如有特定场景(如主从复制、Docker 部署、高可用架构),可进一步扩展。

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