17370845950

如何开启mysql远程访问_mysql授权配置步骤
要让 MySQL 支持远程访问需两步:一是修改配置文件 bind-address 为 0.0.0.0 并重启服务,二是创建或授权用户如 'remote_user'@'%' 并刷新权限,最后确保防火墙及云安全组放行 3306 端口。

要让 MySQL 支持远程访问,核心是两步:修改绑定地址允许外部连接,再给指定用户授予远程登录权限。缺一不可,否则即使账号有权限也连不上,或能连上但被拒绝访问数据库。

1. 修改 MySQL 配置文件,放开监听地址

MySQL 默认只监听本地(127.0.0.1),需改为监听所有 IP 或指定网卡。

  • 找到配置文件:Linux 通常是 /etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnfWindowsmy.ini(在 MySQL 安装目录下)
  • 查找 bind-address 这一行,将其改为:
    bind-address = 0.0.0.0(监听所有 IPv4 地址)
    或指定服务器内网 IP,如 bind-address = 192.168.1.100
  • 保存后重启 MySQL 服务:
    sudo systemctl restart mysql(Ubuntu/Debian)
    sudo service mysqld restart(CentOS/RHEL)

2. 登录 MySQL,创建或授权远程用户

必须用 root 或高权限账号登录本地 MySQL(mysql -u root -p),然后执行授权语句。

  • 如果想复用现有用户(比如 root),直接授权(不推荐用于生产):
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
  • 更安全的做法:新建专用远程用户(例如用户名 remote_user,密码 SecurePass123):
    CREATE USER 'remote_user'@'%' IDENTIFIED BY 'SecurePass123';
    GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'remote_user'@'%';
  • 务必刷新权限:
    FLUSH PRIVILEGES;

3. 检查防火墙是否放行 3306 端口

即使 MySQL 配置正确,防火墙也可能拦截连接请求。

  • Ubuntu/Debian(UFW):sudo ufw allow 3306
  • CentOS 7+/RHEL(firewalld):sudo firewall-cmd --permanent --add-port=3306/tcp
    sudo firewall-cmd --reload
  • 云服务器(如阿里云、腾讯云):还需在安全组中手动放行 TCP 3306 端口

4. 测试远程连接

从另一台机器用客户端测试,确认是否生效:

  • 命令行连接(需安装 MySQL 客户端):
    mysql -h 服务器公网IP -u remote_user -p
  • 图形工具(如 MySQL Workbench、DBeaver):填入 IP、用户名、密码和端口(默认 3306)
  • 常见报错提示参考:
    ERROR 1130: Host 'x.x.x.x' is not allowed to connect → 用户授权未生效或 host 不匹配
    Can't connect to MySQL server → 网络不通、防火墙拦截、MySQL 未监听 0.0.0.0 或服务未启动

配置本身不复杂,但每一步都可能成为连接失败的原因。建议按顺序检查:配置文件 → 授权语句 → 防火墙 → 远程测试。安全起见,生产环境尽量避免开放 root 远程登录,且限制可连接的 IP 范围(把 @'%' 换成 @'192.168.1.%' 或具体 IP)。