Host "localhost " is not allowed to connect to mysql server 解决方法

 

  背景:在一个阴雨绵绵的下午,dunmu来对我说,他数据库的数据蹦了,想要我把数据导给他。我一脸嫌弃的照做了,结果他说他导不进去,报一批按错(默哀,貌似我之前也遇到过 咳咳~).

寻求无果,然后想出连接我本地数据操作的方案,然后就继续,貌似不予许,然后找答案......

  傻逼的把mysql数据库下user的root用户的Host字段改成了*, 然后重启一下,呵呵~ Host "localhost " is not allowed to connect to mysql server,连本地就禁用了,,,

   解决:通过丢丢时间的纠结和查找,终于找到了个不靠谱的解决方案(我也不知道啊QAQ),,,

首先停止mysql服务:

  net stop mysql


然后:
  mysqld --skip-grant-tables


另开一个终端,继续
  mysqlcheck --check-upgrade --all-databases --auto-repair


然后再输入
  mysql


就可以进入MySQL控制台了,无需密码也能进入,,,

 

  注意:结果是数据库被还原了,之前的数据全没了,回到了刚安装MySQL的时候,,,  所以,操作需谨慎啊!!! o.oi

 

  有幸的是数据库被还原并不代表数据被清除了!

 

  下面才是新发现,介绍一个非常有用的mysql启动参数—— --skip-grant-tables。 顾名思义,就是在启动mysql时不启动grant-tables,授权表。有什么用呢?当然是忘记管理员密码后有用。

  如果你忘记了mysql密码几乎是没有什么好办法可以直接修改密码了,但我们可以在my.ini把加上skip-grant-tables,然后重启mysql就不需要密码了,这时我们再修改root密码,最后再把skip-grant-tables注释或删除重启即可。 

 

use mysql;
update user set password=password('12345') where user='root';
flush privileges;
exit;


新安装,提示无密码时,可以使用语句SET PASSWORD

shell > mysql -uroot -p
mysql >
mysql > SET PASSWORD = PASSWORD('new pass');

 

 

  听说 my.ini 加上这句 skip-name-resolve ,远程连接速度会变快,但是也有注意点,mysql.user 表里面的 host 不要用 localhost 之类的,要用IP表示,如127.0.0.1不然连自己都连不上数据库,会报错。

 

posted @ 2017-04-21 16:29  Sanplit  阅读(1541)  评论(0编辑  收藏  举报