You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FQDN标识用户远程连接MySQL数据库遭IP权限拒绝问题求助

解决MySQL远程连接权限问题:Host 'xxx' is not allowed to connect

Hey there, let's sort out this MySQL connection issue for you!

先明确你的疑问:权限验证是在服务器端进行的

MySQL的所有权限检查逻辑**完全在远程服务器(remotehost.domain.com)**上执行,客户端(pc.domain.com)只是发送连接请求,服务器会负责核对你的用户身份、权限以及来源是否合法,所以问题出在服务器的用户权限配置上。

问题根源

你创建了'user'@'pc.domain.com'的用户,但服务器收到连接请求时,识别到的来源是IP 128.0.200.82,而不是域名pc.domain.com。这通常是因为:

  • 服务器的DNS反向解析没有把128.0.200.82映射到pc.domain.com;
  • 或者MySQL的skip_name_resolve配置开启了(这个配置会让服务器直接用IP识别客户端,不做域名解析)。

不管哪种情况,服务器都会用IP去匹配mysql.user表中的用户条目,而你没有创建'user'@'128.0.200.82'这个用户,所以就触发了拒绝连接的错误。

解决方案

这里有几个实用的修复方法,按需选择:

  1. 直接创建绑定该IP的用户
    如果你的客户端IP是固定的,这是最稳妥的方式:

    -- 创建用户
    CREATE USER 'user'@'128.0.200.82' IDENTIFIED BY 'pass';
    -- 授予对应权限(替换your_database为实际数据库名,权限范围按需调整)
    GRANT ALL PRIVILEGES ON your_database.* TO 'user'@'128.0.200.82';
    -- 刷新权限使配置生效
    FLUSH PRIVILEGES;
    
  2. 允许整个域名段的客户端连接
    如果你的客户端IP是动态的,或者想让domain.com下的所有机器都能连接,可以用通配符:

    CREATE USER 'user'@'%.domain.com' IDENTIFIED BY 'pass';
    GRANT ALL PRIVILEGES ON your_database.* TO 'user'@'%.domain.com';
    FLUSH PRIVILEGES;
    
  3. 检查并配置DNS反向解析(可选)
    如果你坚持要用域名绑定用户,可以联系服务器的DNS管理员,确保128.0.200.82的反向解析记录指向pc.domain.com。不过这个操作比较繁琐,不如前两种方法直接。

额外小提示

你可以登录远程MySQL服务器,执行下面的命令查看当前存在的用户条目,确认你的配置是否正确:

SELECT user, host FROM mysql.user WHERE user = 'user';

内容的提问来源于stack exchange,提问作者Lucas Noetzold

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:05:59