You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何启用MySQL远程连接?MariaDB远程连接失败排查求助

启用MySQL/MariaDB远程连接的通用步骤

先从基础配置说起,帮你梳理完整的远程连接启用流程:

  • 配置绑定地址:打开你的my.cnf(或my.ini)文件,找到bind-address项设置为0.0.0.0(允许所有IP访问),同时确保skip-networking这行被注释掉(如果存在的话)。修改后记得重启数据库服务让配置生效。
  • 授权远程访问用户:登录数据库执行授权命令,比如允许root从任意IP访问(生产环境更建议限制特定IP提升安全性):
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
    若要限制仅你的Windows机器访问,把命令里的%替换成Windows机器的IP即可。
  • 重启数据库服务:根据服务器系统执行对应命令,比如CentOS/RHEL系:
    systemctl restart mariadb
    
    Debian/Ubuntu系:
    systemctl restart mysql
    
你的MariaDB连接问题排查要点

你已经完成了bind-address配置且netstat显示监听正常,那大概率是以下几个容易遗漏的点:

  • 用户权限的Host限制:即使你创建了root用户,可能它的host字段还是localhost127.0.0.1,只能本地连接。登录MariaDB执行:
    SELECT user, host FROM mysql.user;
    
    查看root对应的host值,如果不是%或你的Windows机器IP,就需要执行上面的授权命令添加远程访问权限。
  • 密码验证插件问题:MariaDB默认的root用户可能使用了unix_socket插件,这种插件只能通过本地socket连接,无法远程访问。检查插件类型:
    SELECT user, plugin FROM mysql.user WHERE user='root';
    
    如果pluginunix_socket,修改为mysql_native_password
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的新密码';
    FLUSH PRIVILEGES;
    
  • 防火墙/安全组拦截:这是最常见的遗漏点!
    • 服务器本地防火墙:比如用firewalld的话,检查是否开放3306端口:
      firewall-cmd --list-ports
      
      若没开放,添加规则并永久生效:
      firewall-cmd --add-port=3306/tcp --permanent
      firewall-cmd --reload
      
      ufw的话:
      ufw allow 3306/tcp
      ufw reload
      
    • 云服务器安全组:如果你用的是云主机(阿里云、AWS等),一定要在控制台的安全组规则里添加允许Windows机器IP访问3306端口的入站规则。
  • SELinux限制:如果你的服务器开启了SELinux,它可能会阻止数据库的远程连接。可以临时关闭测试:
    setenforce 0
    
    若关闭后能正常连接,就永久配置SELinux允许远程连接:
    setsebool -P mysqld_can_network_connect 1
    
  • MySQL Workbench配置错误:确认Workbench里的连接参数:主机名是服务器的公网IP(内网环境用局域网IP),端口是3306,用户名是root,密码正确,连接方式选择TCP/IP

内容的提问来源于stack exchange,提问作者Fueled By Coffee

火山引擎 最新活动