在Ubuntu云服务器上部署MySQL并设置远程访问,可以按以下步骤操作:
一、安装MySQL
1. 更新系统并安装MySQL
# 更新包列表
sudo apt update
# 安装MySQL服务器
sudo apt install mysql-server -y
# 安装完成后,MySQL服务会自动启动
2. 运行安全配置脚本
# 运行安全安装向导
sudo mysql_secure_installation
按照提示设置:
- 设置验证密码强度策略(建议选2)
- 设置root密码
- 移除匿名用户
- 禁止root远程登录
- 移除测试数据库
- 重新加载权限表
二、配置MySQL允许远程访问
1. 修改MySQL配置文件
# 编辑MySQL配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
找到 bind-address 行,修改为:
bind-address = 0.0.0.0 # 允许所有IP访问
# 或 bind-address = 服务器公网IP # 只允许特定IP
2. 重启MySQL服务
sudo systemctl restart mysql
三、创建远程访问用户
1. 登录MySQL
# 使用root登录MySQL
sudo mysql -u root -p
2. 创建远程访问用户
-- 创建新用户(推荐不使用root远程访问)
CREATE USER 'remote_user'@'%' IDENTIFIED BY '你的强密码';
-- 授予所有权限(生产环境建议按需授权)
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
-- 或授予特定数据库权限
-- GRANT ALL PRIVILEGES ON your_database.* TO 'remote_user'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
-- 查看用户权限
SELECT host, user FROM mysql.user;
四、配置防火墙(如果启用)
1. 开放MySQL端口(默认3306)
# 如果使用UFW
sudo ufw allow 3306/tcp
sudo ufw reload
# 如果使用iptables
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
2. 检查端口监听状态
# 检查MySQL是否监听正确端口
sudo netstat -tlnp | grep mysql
# 或
sudo ss -tlnp | grep mysql
五、测试远程连接
1. 从本地机器测试连接
# 使用mysql客户端连接
mysql -h 你的服务器IP -u remote_user -p
2. 使用其他工具连接
- MySQL Workbench
- Navicat
- phpMyAdmin
- 编程语言MySQL驱动
六、安全建议
1. 增强安全性
-- 限制用户访问IP范围
CREATE USER 'remote_user'@'192.168.1.%' IDENTIFIED BY '密码';
-- 使用SSL连接(如果支持)
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' REQUIRE SSL;
2. 修改默认端口(可选)
# 修改配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 添加或修改:port = 3307
# 重启MySQL
sudo systemctl restart mysql
# 开放新端口
sudo ufw allow 3307/tcp
七、常见问题解决
1. 连接被拒绝
# 检查MySQL服务状态
sudo systemctl status mysql
# 检查错误日志
sudo tail -f /var/log/mysql/error.log
2. 忘记root密码
# 停止MySQL服务
sudo systemctl stop mysql
# 以安全模式启动
sudo mysqld_safe --skip-grant-tables &
# 重置密码
mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
八、备份与恢复
1. 备份数据库
# 备份所有数据库
mysqldump -u root -p --all-databases > backup.sql
# 备份特定数据库
mysqldump -u root -p database_name > database_backup.sql
2. 恢复数据库
mysql -u root -p < backup.sql
注意事项:
- 强密码策略:使用复杂密码,避免默认密码
- 最小权限原则:按需授予权限,避免使用ALL PRIVILEGES
- 定期更新:保持MySQL和系统更新
- 监控日志:定期检查MySQL日志
- 云安全组:确保云服务商安全组开放3306端口
完成以上步骤后,你的MySQL应该可以通过远程连接访问了。
CLOUD技术笔记