云服务器Ubuntu系统下如何部署MySQL并设置远程访问?

在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

注意事项:

  1. 强密码策略:使用复杂密码,避免默认密码
  2. 最小权限原则:按需授予权限,避免使用ALL PRIVILEGES
  3. 定期更新:保持MySQL和系统更新
  4. 监控日志:定期检查MySQL日志
  5. 云安全组:确保云服务商安全组开放3306端口

完成以上步骤后,你的MySQL应该可以通过远程连接访问了。

云服务器