今天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;