奋斗
努力

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

云计算

在新购的 Linux 云服务器上部署 MySQL 数据库,通常涉及以下几个核心步骤:环境准备、安装 MySQL、安全配置、远程访问设置、防火墙配置以及测试连接。

以下是以 CentOS/RHEL 和 Ubuntu/Debian 两大主流发行版为例的详细部署指南。


📌 前置准备

  1. 登录服务器:通过 SSH 使用 root 用户或具有 sudo 权限的用户登录。
  2. 更新系统:确保系统软件包是最新的。
  3. 确认发行版:
    • CentOS / RHEL / Alibaba Cloud Linux → 使用 yum 或 dnf
    • Ubuntu / Debian → 使用 apt

✅ 方案一:CentOS/RHEL 系列(推荐)

第 1 步:安装 MySQL

# 1. 更新 yum 源
sudo yum update -y

# 2. 安装 MySQL Server(默认会安装 MySQL 8.0)
sudo yum install mysql-server -y

# 3. 启动 MySQL 服务并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld

# 4. 检查状态
sudo systemctl status mysqld

第 2 步:初始安全配置

MySQL 安装后运行一个安全脚本,用于设置 root 密码、删除匿名用户等。

sudo mysql_secure_installation

交互式提示说明:

  • VALIDATE PASSWORD COMPONENT:是否启用密码强度验证?建议选 Y(强密码)。
  • Change the root password?:设置 root 密码,输入新密码。
  • Remove anonymous users?:删除匿名账户,选 Y。
  • Disallow root login remotely?:暂时选 N(稍后手动配置远程访问更安全),或选 Y 并在后面单独开启。
  • Remove test database and access to it?:删除测试库,选 Y。
  • Reload privilege tables now?:刷新权限,选 Y。

第 3 步:配置远程访问(允许外部 IP 连接)

默认情况下,MySQL 只允许本地访问。需修改配置文件或直接在数据库中授权。

方法 A:通过 SQL 命令授权(推荐)

# 登录 MySQL
mysql -u root -p

# 在 MySQL 命令行中执行以下 SQL:
-- 创建新用户(推荐做法,不要直接用 root 远程)
CREATE USER 'myuser'@'%' IDENTIFIED BY 'MyStrongPassword123!';

-- 授予所有权限(生产环境建议限制具体数据库和权限)
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' WITH GRANT OPTION;

-- 刷新权限
FLUSH PRIVILEGES;

-- 退出
EXIT;

方法 B:修改配置文件(可选)

编辑 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf,注释掉:

# bind-address = 127.0.0.1

然后重启 MySQL:

sudo systemctl restart mysqld

第 4 步:开放防火墙端口

CentOS 默认使用 firewalld。

# 开放 3306 端口
sudo firewall-cmd --permanent --add-port=3306/tcp

# 重载防火墙规则
sudo firewall-cmd --reload

# 验证
sudo firewall-cmd --list-ports

⚠️ 重要提醒:如果使用的是阿里云/AWS 等云厂商,还需在 控制台的安全组(Security Group) 中添加规则,放行 TCP 3306 端口。

第 5 步:测试连接

从你的本地机器使用客户端工具(如 Navicat、DBeaver、MySQL Workbench 或命令行)连接:

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

✅ 方案二:Ubuntu/Debian 系列

第 1 步:安装 MySQL

# 1. 更新 apt 源
sudo apt update

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

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

# 4. 检查状态
sudo systemctl status mysql

第 2 步:初始安全配置

sudo mysql_secure_installation

操作同上,设置 root 密码、删除匿名用户等。

第 3 步:配置远程访问

方法 A:SQL 授权(推荐)

mysql -u root -p

-- 创建用户并授权
CREATE USER 'myuser'@'%' IDENTIFIED BY 'MyStrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

方法 B:修改绑定地址

编辑 /etc/mysql/mysql.conf.d/mysqld.cnf:

[mysqld]
bind-address = 0.0.0.0

重启服务:

sudo systemctl restart mysql

第 4 步:开放防火墙端口

Ubuntu 默认使用 ufw。

# 允许 3306 端口
sudo ufw allow 3306/tcp

# 查看状态
sudo ufw status

同样记得在云厂商控制台的 安全组 中放行 3306 端口。

第 5 步:测试连接

同 CentOS 方案。


🔒 生产环境最佳实践建议

项目 建议
用户权限 不要直接使用 root 远程连接。为每个应用创建独立用户,仅授予必要数据库的权限。
密码策略 使用高强度密码,定期更换。启用 MySQL 密码验证插件。
监听地址 生产环境建议将 bind-address 设为内网 IP(如 192.168.x.x),并通过堡垒机或跳板机访问,而非直接暴露公网。
SSL/TLS 启用 SSL 加密连接,防止数据在传输中被窃听。
备份策略 配置定时自动备份(如使用 mysqldump + cron,或使用云厂商提供的快照/备份服务)。
性能优化 根据服务器内存调整 innodb_buffer_pool_size(建议设为物理内存的 50%-70%)。
日志监控 开启慢查询日志,便于后续性能调优。

❓ 常见问题排查

  1. 连接被拒绝(Connection Refused):

    • 检查防火墙是否开放 3306。
    • 检查云服务商安全组是否放行。
    • 检查 MySQL 是否监听 0.0.0.0 而非 127.0.0.1。
  2. Access denied for user ‘root’@’…’ (using password: YES):

    • 密码错误。
    • 用户主机权限限制(如 'root'@'localhost' 无法从远程登录)。
    • 解决方案:重新创建用户并授权 % 主机。
  3. MySQL 服务无法启动:

    • 查看日志:sudo journalctl -xe | grep mysql 或 /var/log/mysql/error.log。
    • 常见原因:端口冲突、磁盘空间不足、配置文件语法错误。

✅ 完成以上步骤后,你的 MySQL 数据库已成功部署并可远程访问。建议立即进行数据备份测试,确保系统稳定。

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