Host 'localhost' is not allowed to connect to this MySQL server解决方案
原因:
之所以出现Host 'localhost' is not allowed to connect to this MySQL server,主要原因是用户在操作时,将root 这个用户不小心删掉了,而root 对应的ip地址一般用localhost来登录。当我把root这个删掉后,就会出现上述错题提醒····
解决方法:
在mysql安装文件中,找到
小提醒:
在创建用户,或是修改用户时,若主机设为localhost,将会导致用能用localhost才能连接!将其改为%,%表示通用,即用localhost和ip都可登录连接
小小感悟,有错误的地方,还望指正~!!!
文章出处:
http://www.cnblogs.com/ycsfwhh/archive/2011/02/18/1957980.html
上面是摘自网友的文章,今天我这边也出了类似的问题,我描述一下问题:
之前MySQL一直可以登录,但是一段时间不用了之后,今天突然想要做个东西了,就连本地MySQL做测试,没想到一晚上的时间全部用来修复MySQL客户端了。同样问题是连接客户端的时,报错:
Host 'localhost' is not allowed to connect to
所以到网上搜到上面的文章,上面的文章只是第一步。当我新建表的时候或者修改表的时候有出息了下面的提示(郁闷呢):
Table ‘xxx’ is marked as crashed and should be repaired
网上的教程说是表’XXX‘有问题,需要修复。网上有这样的解决办法:
找到mysql的安装目录的bin/myisamchk工具,在命令行中输入:
myisamchk -c -r ../data/tablename/’XXX‘.MYI
然后myisamchk 工具会帮助你恢复数据表的索引。好象也不用重新启动mysql,问题就解决了。
但是对我的问题不好使,因为我根本就找不到data文件夹和xxx table。无奈后来发现MySQL administrator工具有一个工具:
在user表上右键选择’Maintainence-repair Table‘,一步一步执行,就能解决问题了。
我兴冲冲的把my.ini 文件中的内容修改回去,再登录,还是提示期初的错误,啊~~~~~头大。
没办法问题还是要解决的。接下来还是修改my.ini文件,登录客户端后,为user表中的root用户授权:
grant all privileges on *.* to root@localhost identified by 'linuxtone' with GRANT OPTION;
但是出现下面的提示:
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute
网友说不用理它,接着执行:
update user set password=password('linuxtone') where user='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
注意单双引号。
mysql> flush privileges; //注意先刷新下表
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on *.* to root@localhost identified by 'linuxtone' with GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from user where user='root';
搞定!~!