首先我想说一句话:
我极度鄙视国内搞IT的人,简直无语,同样是解决这个问题,几乎一模一样,都是抄来的。更有甚者,抛出的错误是:Access denied for user 'root'@'localhost' to database 'mysql',竟然也把别人的解决方法照搬过来,还恬不知耻的说:问题解决了,我估计都没有真正去操作过。
下面是本人在参考别人的基础之上得到的解决方法:
问题的引出:
我在CentOS上装完mysql后,用navicat链接的时候,抛出MySql - SQL Error (1130): Host IP is not allowed to connect to this MySQL server 错误,具体解决方法请参考本人日志http://361324767.blog.163.com/blog/static/114902525201232832621498/。
该问题解决后,本人登录mysql ,输mysql -u root时无错,但是执行如下语句时:
mysql> use mysql
抛出该错误,参考网上各位大抄的大作如下:
----------------------------------------------------------------------------------------------------------------------------------------------如先输入mysql,成功启动后输入use mysql,出现如下错误:Access denied for user ''@'localhost' to database 'mysql' 还有,输mysql可以,输mysql -u root就出错了: Access denied for user 'root'@'localhost' (using password: NO). The reason is: 是昨日更新ROOT密码时出错 update user set password = '123456' where user ="root" //这样写是错的,密码其实不是123456 应该为update user set password = password ('123456') where user = "root" 具体操作步骤: 关闭mysql: # service mysqld stop 然后: # mysqld_safe --skip-grant-tables 启动mysql: # service mysqld start mysql -u root mysql> use mysql mysql> UPDATE user SET Password=PASSWORD('xxx') WHERE user='root'; mysql> flush privileges; mysql>\q |
---------------------------------------------------------------------------------------------------------------------------------------------------------
按照各位大抄的步骤一步一步做,没有任何效果,仔细研究错误信息中的 user''@'localhost' ,说明user表中的user=‘’的信息有误,然后执行UPDATE user SET Password=PASSWORD('') WHERE user='';
果断没有作用。
最后不允许匿名登录,执行以下语句
mysql> delete from user where user='';
mysql > flush privileges;
mysql> \q
# service mysqld restart
问题解决。
------------------------------
在此忠告各位搞IT的同仁,你们有点专业精神好不?每个问题都搞清楚什么意思好不?别抄来抄去有意思么?都中国IT人的脸,中国的IT行业都毁在你们这群人手里了。