1. 程式人生 > >Linux中mysql實現遠端訪問

Linux中mysql實現遠端訪問

       MySql預設是不能通過遠端訪問的

1.啟動MySQL服務:
       service mysqld start

2.開啟MySQL資料庫:
       mysql -u root -p回車提示輸入密碼:輸入密碼,進入MySQL資料庫

3.使用mysql資料庫
       use mysql;

4.檢視使用者表
       select 'Host','User' from user;
       這裡寫圖片描述

5.更新使用者表
       UPDATE user SETHost= '%' WHEREUser= 'root' LIMIT 1;

       這裡寫圖片描述


       此句是關鍵,意思為,更新root使用者;%表示為:允許任何ip都可登入
6.強制重新整理許可權
       flush privileges;
       這裡寫圖片描述

       此時就可以遠端連線mysql資料庫了!!!

【mysql服務啟動不了】

  • 顯示:Job for mysqld.service failed because the control process exited
    with error code. See “systemctl status mysqld.service” and
    “journalctl -xe” for details.
  • 檢視日誌:vim /var/log/mysqld.log,顯示什麼程序已存在
  • 所以就乾脆殺死了所有的程序:ps -ef|grep
    mysql | grep -v grep |awk '{print $2}' | xargs kill -9
  • 此時服務能起來了,但是密碼登入時進不去,不使用密碼能登進去,use mysql時顯示如下錯誤:這裡寫圖片描述
    • 關閉mysql: # service mysqld stop
    • 遮蔽許可權: # mysqld_safe –skip-grant-table
                    螢幕出現: Starting demo from …..後
    • 新開一個終端輸入
  # mysql -u root mysql
mysql> delete from user where USER=''; mysql> FLUSH PRIVILEGES; mysql> \q

       完美解決!!!
       原因:mysql資料庫的user表裡,存在使用者名稱為空的賬戶即匿名賬戶,導致登入的時候是雖然用的是root,但實際是匿名登入的,通過錯誤提示裡的”@’localhost’可以看出來這裡寫圖片描述

【忘記密碼時,修改密碼】

  • 登入:mysql -u root mysql
  • 修改登入密碼:修改yourPassword處即可

    mysql> UPDATE user SET Password=PASSWORD('123456') where USER='root';
    mysql> FLUSH PRIVILEGES; mysql> exit