mysql host ... is not allowed to connect to this MySql server

【问题描述】 mysql 虚拟机无法访问宿主机数据库,估计其他电脑也连不上这个mysql数据库;

                 然后客户端(直连数据库)报错提示目标主机DbProvider找不到(驱动已安装了)

                 报错:1130-host ... is not allowed to connect to this MySql server

【解决方案】 

先查看某用户的权限:


以下为网摘,我按下面的蓝色字体的方式搞定了,提示驱动的问题也一并被解决了。...原帖中其他方法没去试~

1。 改表法。

可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"

mysql -u root -pvmwaremysql>use mysql;

mysql>update user set host = '%' where user = 'root';

mysql>select host, user from user;

2. 授权法。

例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH   PRIVILEGES;

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH   PRIVILEGES;

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH   PRIVILEGES;

我用的第一个方法,刚开始发现不行,在网上查了一下,少执行一个语句 mysql>FLUSH RIVILEGES 使修改生效.就可以了

另外一种方法,不过我没有亲自试过的,在youkuaiyun.com上找的,可以看一下.

在安装mysql的机器上运行:

1、d:\mysql\bin\>mysql   -h   localhost   -u   root //这样应该可以进入MySQL服务器

2、mysql>GRANT   ALL   PRIVILEGES   ON   *.*   TO   'root'@'%'   WITH   GRANT   OPTION //赋予任何主机访问数据的权限

3、mysql>FLUSH   PRIVILEGES //修改生效

4、mysql>EXIT //退出MySQL服务器

这样就可以在其它任何的主机上以root身份登录啦!

http://www.cnblogs.com/xyzdw/archive/2011/08/11/2135227.html

### 解析错误原因 该问题的根本原因是MySQL服务器的安全设置阻止了来自`host.docker.internal`的连接请求。具体来说,MySQL用户账户的权限配置可能仅限于特定主机或IP地址范围内的连接尝试[^1]。 ### 修改MySQL用户权限 为了使`host.docker.internal`能够成功连接到MySQL服务器,需调整相应用户的权限设置: 进入MySQL命令行工具并执行以下SQL语句来更新具有适当权限的新条目: ```sql GRANT ALL PRIVILEGES ON *.* TO 'your_user_name'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` 这会授予指定用户名从任何地方(`%`)访问数据库的权利,并刷新授权表以应用更改[^4]。 请注意,在生产环境中应谨慎使用通配符百分号('%')作为主机名,因为它意味着允许所有外部源建立连接;对于更严格的安全控制,请替换为具体的客户端IP地址或者域名。 ### Docker网络配置优化 除了上述方法外,还需确认Docker容器与宿主机之间的通信方式是否恰当。如果遇到端口冲突或其他连通性障碍,则可以考虑通过映射不同的本地端口号至容器内部服务的方式解决问题,例如在`docker-compose.yml`文件中定义如下端口转发规则: ```yaml ports: - "3311:3306" ``` 这里假设本机已有另一个实例占用标准MySQL端口(3306),因此选择了替代性的外部端口(3311)[^3]。 另外值得注意的是,某些操作系统上`host.docker.internal`解析可能会有问题,此时可尝试直接利用IPv4/IPv6地址代替之。 ### 验证改动效果 完成以上操作之后,重启相关服务确保变更生效,并再次测试连接状况验证问题是否得到妥善解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值