今天linux下mysql:access denied for user'root'@'localhost' using password yes,以及使用navicat登陸mysql

    今天linux下安裝和使用mysql遇到問題accessdenied for user'root'@'localhost' using password yes,以及使用navicat登陸mysql遇到Can'tconnect to Mysql on '主機名'(10061)解決方法

 

   linux下安裝了mysql,採用的是apt命令一鍵安裝:

 

   apt install mysql-server

 

    安裝完之後設置了密碼,然後用密碼可以登錄

 

    但爲了其他主機連接該機器,進行了如下操作:

   mysql –u root p

    輸入密碼:

   use mysql;

   //XXX爲設置項,變量

   insert user (host,user,password),values(‘XXX’,’XXX’,password(XXX));

   flush privileges;

   quit;

 

    然後就發現再登陸時發現出現了錯誤:

   access denied for user'root'@'localhost' using password yes

    相當鬱悶,密碼試了N次都不行。

 

    看網上的說法都是改user表。

    試了一下,沒效果,突然想了想之前只是添加了一個用戶,

    先用安全模式登陸:

   mysqld_safe --user=mysql --skip-grant-tables --skip-networking&

    登陸成功之後,切換到mysql:

   use mysql;

    查看用戶表:

  select host,user from user;

    發現有好幾個用戶,而且localhost域名用戶的user不是root:也就是說沒有一個和root對應的host爲localhost的用戶。只有一個127.0.0.1和root對應(127.0.0.1就是loc     alhost但不知爲啥登陸不上)。

    於是將除了user:root,host:127.0.0.1以外的刪除。

   delete from user where host not in (‘127.0.0.1’);

    然後將host改爲localhost:

   update user set host = ‘localhost’, password = password(XXX) where user= ‘root’;

   flush privileges;

   quit;

    然後就可以登錄了。

 

    下面提供一個遠程navicat登陸mysql的方法:

    登陸mysql

    修改之前root的host爲’%’

   quit;

    退出。

    然後切換到管理員權限:

   sudo –i

    輸入密碼:

   vi /etc/mysql/my.cnf

    將bind-address改爲0.0.0.0

    保存退出。

    重啓mysql

   service mysql restart

    即可遠程登陸mysql;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章