Administrator
发布于 2026-04-25 / 1 阅读
0
0

阿里云ECS服务器安装部署MySQL完整开启远程访问

环境:CentOS8/9、Rocky、AlmaLinux、MySQL8.0、阿里云 ECS

核心三步:MySQL 授权远程用户 → 关闭绑定本地 → 放行系统防火墙 → 阿里云安全组放行 3306

一、修改 MySQL 配置,允许全网监听

  1. 编辑配置文件

bash

运行

vi /etc/my.cnf
  1. [mysqld] 模块添加 / 修改:

ini

[mysqld]
# 允许所有IP连接
bind-address = 0.0.0.0
# 跳过域名解析,提升连接速度
skip-name-resolve

保存退出 :wq

  1. 重启 MySQL

bash

运行

systemctl restart mysqld

二、MySQL 创建远程账号、授权(两种方案)

方案 1:直接允许 root 远程登录(开发常用)

bash

运行

# 登录mysql
mysql -uroot -p

执行 SQL:

sql

-- 修改root允许任意IP % 连接
ALTER USER 'root'@'%' IDENTIFIED BY 'Root@123456';
-- 赋予全部权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
exit;

方案 2:新建专用远程用户(生产推荐,更安全)

sql

CREATE USER 'remote'@'%' IDENTIFIED BY 'Remote@123456';
GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%';
FLUSH PRIVILEGES;

MySQL8.0 必须用 ALTER USER / CREATE USER,不能用老版本授权方式,否则报错。


三、服务器防火墙放行 3306 端口

firewalld 环境(默认)

bash

运行

# 永久放行3306
firewall-cmd --permanent --add-port=3306/tcp
# 重载生效
firewall-cmd --reload
# 查看是否放行
firewall-cmd --list-ports

关闭防火墙(测试环境偷懒用)

bash

运行

systemctl stop firewalld
systemctl disable firewalld

四、【关键】阿里云 ECS 安全组放行 3306

这一步 90% 人漏掉,导致连不上!

  1. 阿里云控制台 → 找到你的 ECS 实例

  2. 左侧「安全组」→ 点击当前实例绑定的安全组

  3. 入方向规则 → 手动添加:

  • 授权策略:允许

  • 协议类型:TCP

  • 端口范围:3306/3306

  • 授权对象:0.0.0.0/0(所有 IP)

  • 描述:MySQL 远程访问

保存规则,立即生效。


五、测试连接

  1. 本地 Navicat/DBeaver/ 数据库工具

  2. 连接参数:

  • 主机:阿里云 ECS 公网 IP

  • 端口:3306

  • 账号:root / 自定义 remote

  • 密码:你设置的密码


常见报错解决

  1. 1045 拒绝访问:授权语句没执行对、密码错误

  2. 10060 连接超时:阿里云安全组未放行 3306

  3. 10061 无法连接:MySQL 未启动、bind-address=127.0.0.1 限制本地

  4. 密码策略报错:密码必须包含:大写 + 小写 + 数字 + 特殊符号,长度≥8


评论