在新购的 Linux 云服务器上部署 MySQL 数据库,通常涉及以下几个核心步骤:环境准备、安装 MySQL、安全配置、远程访问设置、防火墙配置以及测试连接。
以下是以 CentOS/RHEL 和 Ubuntu/Debian 两大主流发行版为例的详细部署指南。
📌 前置准备
- 登录服务器:通过 SSH 使用 root 用户或具有 sudo 权限的用户登录。
- 更新系统:确保系统软件包是最新的。
- 确认发行版:
- CentOS / RHEL / Alibaba Cloud Linux → 使用
yum或dnf - Ubuntu / Debian → 使用
apt
- CentOS / RHEL / Alibaba Cloud Linux → 使用
✅ 方案一: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%)。 |
| 日志监控 | 开启慢查询日志,便于后续性能调优。 |
❓ 常见问题排查
-
连接被拒绝(Connection Refused):
- 检查防火墙是否开放 3306。
- 检查云服务商安全组是否放行。
- 检查 MySQL 是否监听
0.0.0.0而非127.0.0.1。
-
Access denied for user ‘root’@’…’ (using password: YES):
- 密码错误。
- 用户主机权限限制(如
'root'@'localhost'无法从远程登录)。 - 解决方案:重新创建用户并授权
%主机。
-
MySQL 服务无法启动:
- 查看日志:
sudo journalctl -xe | grep mysql或/var/log/mysql/error.log。 - 常见原因:端口冲突、磁盘空间不足、配置文件语法错误。
- 查看日志:
✅ 完成以上步骤后,你的 MySQL 数据库已成功部署并可远程访问。建议立即进行数据备份测试,确保系统稳定。
云服务器