在云服务器上配置 MySQL 是一个常见的操作,适用于部署 Web 应用、数据库服务等。以下是基于 Linux 系统(如 Ubuntu/CentOS) 的云服务器配置 MySQL 的完整步骤。
一、准备工作
-
登录云服务器
使用 SSH 登录你的云服务器:ssh root@your_server_ip -
更新系统包
# Ubuntu/Debian sudo apt update && sudo apt upgrade -y # CentOS/RHEL sudo yum update -y
二、安装 MySQL
1. Ubuntu 系统
# 安装 MySQL 服务器
sudo apt install mysql-server -y
# 启动并设置开机自启
sudo systemctl start mysql
sudo systemctl enable mysql
2. CentOS 系统(以 CentOS 7/8 为例)
# 添加 MySQL 官方 Yum 仓库(以 MySQL 8.0 为例)
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
# 安装 MySQL 服务器
sudo yum install mysql-server -y
# 启动并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld
注意:CentOS 8 可能使用
dnf替代yum。
三、初始化安全配置
运行 MySQL 自带的安全脚本,设置 root 密码、移除匿名用户等:
sudo mysql_secure_installation
按照提示操作:
- 设置 root 用户密码
- 移除匿名用户
- 禁止 root 远程登录(可选)
- 移除 test 数据库
- 重新加载权限表
四、配置远程访问(可选)
默认情况下,MySQL 只允许本地连接。如需从外部连接(如本地程序连接云数据库),需做以下配置。
1. 修改 MySQL 配置文件
# Ubuntu 路径
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 或 CentOS 路径
sudo nano /etc/my.cnf
# 或 /etc/my.cnf.d/server.cnf
找到 bind-address 行,修改为:
bind-address = 0.0.0.0
注意:
0.0.0.0表示监听所有 IP,生产环境建议绑定具体 IP 或使用防火墙限制。
保存并退出。
2. 重启 MySQL 服务
sudo systemctl restart mysql
# 或 CentOS
sudo systemctl restart mysqld
3. 创建远程访问用户
登录 MySQL:
mysql -u root -p
执行 SQL 创建用户并授权:
-- 创建用户(允许从任意 IP 连接)
CREATE USER 'admin'@'%' IDENTIFIED BY 'YourStrongPassword123!';
-- 授予所有权限(生产环境建议按需授权)
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
更安全做法:使用
'admin'@'your_ip'限制特定 IP。
五、配置云服务器安全组/防火墙
确保云服务器的 安全组(Security Group) 或防火墙放行 MySQL 端口(默认 3306)。
1. 开放防火墙端口
# Ubuntu(UFW)
sudo ufw allow 3306
# CentOS(firewalld)
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
2. 配置云平台安全组
登录云服务商控制台(如阿里云、腾讯云、AWS、华为云等),在实例的安全组中添加入站规则:
- 协议:TCP
- 端口:3306
- 源 IP:建议限制为你的 IP(如
123.123.123.123/32),避免0.0.0.0/0
六、测试连接
使用 MySQL 客户端或工具(如 Navicat、DBeaver、MySQL Workbench)从本地连接:
- 主机:你的云服务器公网 IP
- 端口:3306
- 用户名:你创建的用户(如
admin) - 密码:对应密码
七、其他建议
-
定期备份
mysqldump -u root -p --all-databases > backup.sql -
使用强密码
避免使用弱密码,防止暴力破解。 -
考虑使用 SSL 加密连接
提高安全性,防止数据被窃听。 -
监控日志
查看日志排查问题:sudo tail -f /var/log/mysql/error.log
常见问题
- 连接被拒绝? 检查
bind-address、防火墙、安全组、MySQL 用户权限。 - 忘记 root 密码? 可通过跳过权限验证方式重置。
- 性能问题? 可优化
my.cnf配置,如调整innodb_buffer_pool_size。
如你使用的是特定云平台(如阿里云 RDS、腾讯云 CDB),建议直接使用其 托管数据库服务,更安全、易管理。
需要我提供某个平台(如阿里云、AWS)的具体配置示例吗?
云计算HECS