远程连接mysql数据库碰到的问题及解决方案

直接用SecureCRT登录到我的linux服务器,连接mysql后出现以下错误

Image(26)[6]

然后我用root用户登录到mysql查看了我的用户信息,如下

Image(27)[6]

出现问题1的原因有很多种,我这里是因为用错了yanglibin这个用户的密码,用正确的密码就ok了

更多详细信息请看 http://blog.csdn.net/lioncode/article/details/7917310(说的很全了)

那篇博客里面还提到过一种很常见的问题就是mysql无法远程登录,

也就是“原因2 : 用户账号存在,但未对其所在的客户端的IP进行远程访问授权允许”

为了模拟这种情况,我创建了一个用户 testmysql如下

Image(28)[6]

提示错误信息如下

Image(29)[6]

这种情况就如博客中所说的“原因2”解决方法是给testmysql用户赋予它所有机器可以登录的权限

注:用以下方式授权用户的前提是mysql.user表中没有其他的testmysql用户,否则很容易报错

Image(30)[6]

Image(31)[6]

为了测试方便我另建了一个用户testmysql1;

Image(32)[6]

最后发现用testmysql1这个用户还是无法登陆的mysql,从那篇博客中的以下截图中找到了一个方法,就是把testmysql1这个用户的密码置空

update mysql.user set Password = PASSWORD('') where User= 'testmysql1';

然后去登陆就可以了,不太清楚这是为什么,很疑惑

Image(33)[6]

这个时候已经可以通过远程链接,如用secureCRT用testmysql1用户去登录mysql,可以行通,但是用这个用户通过navicat这个软件去连接mysql会提示如下错误

Image(34)[6]

到了这一步碰到这个问题找了很多网上的解决方法,比如

http://kiddwyl.iteye.com/blog/67708

http://zhidao.baidu.com/link?url=0hbT0VywNqcmN1uiONFtca7qPjDcgdAi4zZgt6Yc86A1Tsm97o9UqWC4T0uiziSjuDdsD4aquJjITzERn1Y8la

http://zhidao.baidu.com/link?url=tO_HElduXYDtdRNgib9Ce07WNFVfaYq7mTLiixf8onfSqvHgpWTSxTy9HZ0Mgy__q2hybelglVArvxlFi4c-p_

但是都无法解决我的问题,没办法只有继续找了,无意中看到有可能是因为本地机的3306端口被占用,根据这一提示就试着改了下/etc/my.cnf

如下:

vim /etc/my.cnf

image

再去用navicat连接mysql就可以了,当然这只是一个测试用例为了去说明问题,正式情况一般不会去改mysql的端口号

image

另外推荐一篇关于mysql用户权限的文章

http://blog.csdn.net/mchdba/article/details/45934981

原文地址:https://www.cnblogs.com/ryanlamp/p/4757115.html