在VMware上将Windows连接到Ubuntu的MySQL出现ERROR 1130 (HY000)或ERROR 2003 (HY000)错误

3
我尝试了许多方法但都失败了。我想从Windows连接VMware中的Linux上的MySQL。以下是相关信息:
  • VMware:11.1.0 build-2496824
  • Linux:Ubuntu 14.10
  • Windows:win 8.1 x64
  • MySQL版本

    • windws: 5.6.24
    • Linux: 5.5.43
  • IP地址

    • Windows:192.168.1.102
    • Linux: 192.168.1.100

PS: 双方都可以收到对方的ping请求。

当我输入以下命令:

mysql -h 192.168.1.100 -u root_test -p

我确定输入的密码是正确的,但是MySQL服务器返回了“ERROR 1130 (HY000):主机'192.168.1.100'不允许连接到此MySQL服务器”或“ERROR 2003 (HY000):无法连接到'192.168.1.100'上的MySQL服务器(10061)”。

Proto   Recv-Q   Send-Q   Local Address      Foreign Address       State       PID/Program name
tcp          0        0   0.0.0.0:3306       0.0.0.0:*             LISTEN        -    



my.cnf:bind-address = 0.0.0.0

service iptables status
iptables: unrecognized service

select user,host from user;
+------------------+---------------+
| user             | host          |
+------------------+---------------+
| root             | 127.0.0.1     |
| root_test        | 192.168.1.102 |
| debian-sys-maint | localhost     |
| root             | localhost     |
+------------------+---------------+

show grants for 'root_test'@'192.168.1.102';

+-------------------------------------------------------------------------------------------------------------------------------+
| Grants for root_test@192.168.1.102                                                                                            |
+-------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root_test'@'192.168.1.102' IDENTIFIED BY PASSWORD 'MD5-PWD'                                   |

+-------------------------------------------------------------------------------------------------------------------------------+

更新

我最终通过在 Windows 上更改 IPv4 属性中的“自动获取 IP 地址”为“使用以下 IP 地址”来解决了这个问题。

这里

PS:VMware 的网络设置是“桥接(Bridged)”。

非常感谢 @s3v3n 和 @Drew Pierce,你们非常友善和乐于助人。谢谢。


是的,我做了。但是它显示“0行受影响” :( - Paleo
尝试授予通配符主机权限: GRANT ALL PRIVILEGES ON * . * TO 'root_test'@'%'; FLUSH PRIVILEGES; - s3v3n
你是想从Windows电脑连接到Linux电脑上的MySQL服务器,对吗? - s3v3n
жӮЁзҡ„й”ҷиҜҜжҸҗзӨәжҢҮеҮәпјҢдё»жңә192.168.1.100ж— жі•иҝһжҺҘпјҢдҪҶжҳҜиҜҘз”ЁжҲ·жҳҜдёә192.168.1.102еҲӣе»әзҡ„гҖӮ - s3v3n
我尝试了百分号(%),但它没有起作用。明天我会再试一次,谢谢你的回答。 - Paleo
显示剩余13条评论
1个回答

1

1) 修改my.conf文件(无论你的mysql配置文件叫什么)。将bind-address设置为0.0.0.0,因为它可能是127.0.0.1。

2) 停止/重启mysql守护进程

现在连接不再限于来自本地主机。默认情况下,出于明显的安全原因,它是localhost,直到开发人员进行调整

3) 授权并刷新

4) 防火墙

祝好运!


编辑:

在某些环境中设置用户/进入需要的信息。

主要是显示sqlyog如何将您想象中的IP地址作为mysql守护程序看到或知道的主机名(而不管实际上您的IP地址是什么)。

所以,我一直以为我的工作站上的外部IP地址是188.188.188.188,然后我在服务器上创建用户和授权时继续使用这个IP地址,但最终无法登录mysql。

我也在寻找高度安全性。

在aws ec-2或vm环境上创建一个实例。

我的实例的公共DNS为ec2-23-21-7-136.compute-1.amazonaws.com。

只有22号端口开放(ssh)。

MySQL已经安装并运行,在外部世界中不可见。

运行sqlyog进行登录。失败了,好的。此处可见。


通过ssh/putty登录服务器(我的在新加坡,我不在现场)

然后我进入了mysql,现在我在mysql提示符下(不是操作系统提示符,我知道你知道,但其他人可能不知道: >)

mysql> select user,host from mysql.user;
+------------------+------------------------+
| user             | host                   |
+------------------+------------------------+
| root             | 127.0.0.1              |
| foo_user         | w.x.y.z                |
+------------------+------------------------+
2 rows in set (0.00 sec)

进入虚拟机并开放3306端口,允许任意地方0.0.0.0/0的入站连接。


尝试重新连接根目录的sqlyog。

炸弹。很好。 炸弹给了我们很好的信息。

在这里可见

我知道MySQL认为我应该是谁,很高兴根用户无法登录

'root'@'xxxx.yyyy.comcastbusiness.net'


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| foo                |
| mysql              |
| performance_schema |
| phpmyadmin         |
| test               |
+--------------------+
6 rows in set (0.00 sec)

所以我创建了用户

CREATE USER 'fred7'@'xxxx.yyyy.comcastbusiness.net' IDENTIFIED BY 'bonehead7';

GRANT ALL PRIVILEGES ON test.* TO 'fred7'@'xxxx.yyyy.comcastbusiness.net';

对于那些热衷于通配符的人,让你们的安全性降低一些吧。


mysql> select user,host from mysql.user;
+------------------+-------------------------------+
| user             | host                          |
+------------------+-------------------------------+
| root             | 127.0.0.1                     |
| foo_user         | w.x.y.z                       |
| fred7            | xxxx.yyyy.comcastbusiness.net |
+------------------+-------------------------------+

尝试再次使用sqlyog连接,这次用户为fred7密码为bonehead7。

好的。

我进来了。

可见此处


而且我感到非常高兴(至少对我来说是这样)


我尝试了但失败了,关于防火墙是“iptables:未识别的服务”。 - Paleo
完成1和2,然后重新测试。3和4是需要考虑的事项,而不是要键入的实际命令。 - Drew
我已经将set bind-address to 0.0.0.0service mysql restart设置好了,但它不起作用。错误信息相同,为ERROR 11130... - Paleo
绑定地址是在文件中覆盖了 localhost 或 127.0.0.1 的条目吗? - Drew
听起来你在命令提示符处设置了“bind-address”,这是错误的。 - Drew
显示剩余13条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接