我有一个允许远程连接的MySQL服务器(我知道它有效,因为还有其他人远程连接它),但是当我从我的计算机连接时,主机地址正在解析为我的家庭IP地址? / p>
当我对MySQL主机地址执行ping操作时,它会为我提供应该解析的正确IP地址,但是当我将MySQL主机地址放在MySQL连接命令中时,它会显示Access denied for user@{MY_HOME_IP_HERE}
以下是屏幕截图
我从Windows 7机器连接。我尝试使用命令提示符和HeidiSQL进行连接,结果相同。
想法?
答案 0 :(得分:1)
关键是您的用户无权从该IP访问mysql服务器。在mysql服务器中,如果您的IP是动态的,则更改您的用户以添加您的IP(如果是公共的)或使用通配符(不太安全的解决方案)。 如果你使用phpMyAdmin很容易获得
答案 1 :(得分:1)
我知道这是一个老问题,但是昨天我遇到了同样的问题,花了整整一天的时间我才弄清楚,所以在这里找到我的5美分。
您提到其他人可以访问它,因此,如果您已经可以从另一个位置(或其他位置)访问mysql db,则可以要求他们运行此数据库:
select user, host from mysql.user;
这基本上将显示可以访问数据库的用户以及可以从何处访问(%符号表示可以从任何地方访问)。
跑步时
mysql -h hostname -u david -p
主机名确实是mysql所在的主机,这就是为什么dns查找实用程序(例如dig,在这种情况下使用ping)将解析为主机ip的原因。 您获得
的原因拒绝访问david @ yourIP
是因为在mysql.user表中,不允许您的用户从那里登录。 基本上,您需要签入mysql.user表,您的用户可以从中访问该表。管理员可以运行以下内容:
UPDATE mysql.user SET host = '%' WHERE user = 'david';
请注意,如果没有正确的防火墙规则,则不建议这样做,因为它将允许从任何地方进行连接。