Navicat for mysql无法连接到mysql

Navicat for mysql无法连接到mysql,第1张

解决办法:

首先远程连接进入服务器,在cmd中输入mysql -u root -p,然后回车,输入密码后回车进入mysql命令行。

输入use mysql;

输入select user,password,host from user; 可以看到host中只有localhost主机。我们需要将xxxxxxxxxxxx也添加到这里才对。

添加方法如下:输入 grant all privileges on to root@”xxxxxxxxxxxx” identified by “密码”;或者 GRANT ALL PRIVILEGES ON TO ‘root’@’xxxxxxxxxxxx’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;这相当于是给IP-xxxxxxxxxxxx赋予了所有的权限,包括远程访问权限。然后再输入 flush privileges;

再次输入select user,password,host from user; 可以看到host中已经有了新加的IP。

现在再次用Navicat for MySQl访问远程mysql数据库,已经能正常打开了。 问题解决。

如果还是连接不到,那不是 MySQL Server 绑定了本地地址,打开/etc/mysql/mycnf,找到:bind-address = 127001,去除 IP 地址绑定,把它改为:bind-address = 0000。然后重启 MySQL Server:/etc/initd/mysql restart

安装MySQL以后应该会自动启动资料库服务。选择「开始->电脑->右键->管理」,在电脑管理窗口选择「服务与应用程序->服务」,检查MySQL服务的状态是否为「已启动」。

配置skip-name-resolve后,客户端无法连上mysql

原因是由于mysql对连接的客户端进行DNS反向解析。

有2种解决办法:

1,把client的ip写在mysql服务器的/etc/hosts文件里,随便给个名字就可以了。

2,在 mycnf 中加入 skip-name-resolve 。

对于第一种方法比较笨,也不实用,那么 skip-name-resolve 选项可以禁用dns解析,但是,这样不能在mysql的授权表中使用主机名了,只能使用IP。

我理解mysql是这样来处理客户端解析过程的,

1,当mysql的client连过来的时候,服务器会主动去查client的域名。

2,首先查找 /etc/hosts 文件,搜索域名和IP的对应关系。

3,如果hosts文件没有,则查找DNS设置,如果没有设置DNS服务器,会立刻返回失败,就相当于mysql设置了skip-name-resolve参数,如果设置了DNS服务器,就进行反向解析,直到timeout。

注:所谓反向解析是这样的:

mysql接收到连接请求后,获得的是客户端的ip,为了更好的匹配mysqluser里的权限记录(某些是用hostname定义的)。

如果mysql服务器设置了dns服务器,并且客户端ip在dns上并没有相应的hostname,那么这个过程很慢,导致连接等待。

添加skip-name-resolve以后就跳过这个过程了。

第一, 查看服务器端是否限制外部软件链接数据库, 或者指定只有某些IP可以
第二, 检查数据库帐号密码信息, 还有端口,是否正确
一般来说, 就是这两个问题引起的
改成127001试试


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12711328.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存