mysql设置远程连接,详细步骤

时间:2025-09-23 14:34

设置 MySQL 允许远程连接需要从配置文件、用户权限和防火墙三个层面进行操作,以下是详细步骤:

一、修改 MySQL 配置文件(允许监听远程连接)

MySQL 默认只监听本地 127.0.0.1 地址,需修改配置使其接受远程请求。
  1. 找到配置文件(位置因系统而异):
    • Linux 系统:通常在 /etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/my.cnf
    • Windows 系统:在 MySQL 安装目录(如 C:\Program Files\MySQL\MySQL Server 8.0\my.ini
  2. 编辑配置文件:找到 bind-address 配置项,将其注释或改为 0.0.0.0(表示监听所有网络接口):
    ini
    # 原配置(只允许本地连接)
    # bind-address = 127.0.0.1
    
    # 修改后(允许远程连接)
    bind-address = 0.0.0.0
    
     
     
  3. 重启 MySQL 服务使配置生效:
    • Linux:sudo systemctl restart mysql 或 sudo service mysqld restart
    • Windows:通过「服务」管理界面重启 MySQL 服务,或命令行执行:
      cmd
      net stop mysql
      net start mysql
      
       
       

二、创建 / 授权远程访问用户

MySQL 用户权限与访问来源绑定(格式为 用户名@访问IP),需为远程连接单独授权。
  1. 本地登录 MySQL
    bash
    mysql -u root -p  # 输入 root 密码进入控制台
    
     
     
  2. 创建远程用户并授权(二选一):
    • 方式 1:新建专用远程用户(推荐,安全性更高):
      sql
      -- 创建用户(允许所有IP访问,用户名:remote_user,密码:your_strong_password)
      CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_strong_password';
      
      -- 授权该用户访问指定数据库(如 db_name 库的所有表)
      GRANT ALL PRIVILEGES ON db_name.* TO 'remote_user'@'%';
      
      -- 若需访问所有数据库,替换为:GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%';
      
       
       
    • 方式 2:允许现有用户(如 root)远程访问
      sql
      -- 修改 root 用户的访问权限为所有IP(不推荐生产环境)
      ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_root_password';
      GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
      
       
       
     
    说明:% 代表所有 IP,若需限制特定 IP,可改为具体地址(如 192.168.1.100)。
  3. 刷新权限
    sql
    FLUSH PRIVILEGES;
    
     
     

三、开放服务器防火墙端口

MySQL 默认端口为 3306,需在服务器防火墙中允许该端口的入站连接。
  • Linux 系统(UFW 防火墙)
    bash
    sudo ufw allow 3306/tcp  # 允许 TCP 3306 端口
    sudo ufw reload          # 重载防火墙规则
    
     
     
  • Linux 系统(Firewalld)
    bash
    sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
    sudo firewall-cmd --reload
    
     
     
  • Windows 系统
    1. 打开「控制面板 → 系统和安全 → Windows Defender 防火墙 → 高级设置」
    2. 点击「入站规则 → 新建规则」,选择「端口」,输入 3306,允许连接。

四、测试远程连接

在客户端电脑上通过命令行或工具测试连接:
  1. 命令行测试
    bash
    mysql -h 服务器IP地址 -u 远程用户名 -p
    
     
     
    输入密码后,若能成功登录 MySQL 控制台,则配置生效。
  2. 工具测试:使用 Navicat、MySQL Workbench 等工具,输入服务器 IP、端口(3306)、用户名和密码,测试连接。

注意事项

  1. 安全性建议
    • 避免使用 root 用户直接远程访问,创建专用低权限用户。
    • 限制访问 IP 为具体地址(而非 %),减少安全风险。
    • 生产环境建议通过 VPN 或 SSH 隧道连接,而非直接开放公网 3306 端口。
  2. MySQL 8.0 兼容问题:若客户端连接时报错(如 caching_sha2_password 相关错误),可将用户认证方式改为旧版:
    sql
    ALTER USER 'remote_user'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
    
     
     
完成以上步骤后,MySQL 即可接受远程连接。
MySQL处理中文排序,除了拼音还能怎么办?一文掌握拼音与笔画排序的所有奥秘
一小时速通MySQL:零基础入门到精通,看这篇就够了(下篇)
一小时速通MySQL:零基础入门到精通,看这篇就够了(上篇)
MySQL小白下载指南 (以 Windows 为例)
MySQL安装太难?看完这篇就够了!小白专属下载安装指南
MySQL清空表数据,你用DELETE还是TRUNCATE?一文讲清两者核心差异与正确使用场景
从查询崩溃到丝滑流畅:详解MySQL性能优化的核心路径与高频实战技巧
MySQL性能优化漫谈:从金字塔法则到避坑指南,一位老DBA的架构思维与实践总结
千万级数据何去何从?一文读懂MySQL分库分表面试与工程实践的核心要点
mysql2,用于与 MySQL 数据库进行交互