Mysql 遠程連接可以登陸,本地連接無法登陸的解決方法

工作完了以後,回家發現mysql無法登陸了,中午才改完遠程連接可以拿navicsat連接呢,晚上回家就連不上了,真是奇了怪。


開啓遠程的方法

update user set host='%' where user='root';
flush privileges;
  • 1

發現原因

  • 用遠程連接上去後發現表中的root對應的host確實是%,而且還有一個127.0.0.1,那麼不應該連接不上呀。
  • 但是下面還有一個localhost是空白的,難道localhost和127.0.0.1不一樣?百度搜索了一翻,還真不一樣,試了下,神了~
  • 理由是在linux中,如果直接使用命令行登陸mysql,不算TCP/IP協議,所以用不上127.0.0.1,採用的是 unix domain socket連接。

    解決問題

  • 查了大概三種方法,第一種方法,丟棄掉localhost用戶就好。
    drop user ''@localhost;
    flush privileges;
    
    • 1
    • 2
  • 第二個方法在my.cnf的[mysql]區段裏添加
    protocol=tcp
    
    • 1
  • 第三個方法給localhost用戶分配權限及添加密碼即可。我用的就是第三種方法。
    mysql> grant all privileges on *.* to root@'localhost' identified by 'cisco';
    Query OK, 0 rows affected (0.00 sec)
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    • 1
    • 2
    • 3
  • 最後退出重新進入就可以了。

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