Linux中mysql實現遠端訪問
阿新 • • 發佈:2019-02-07
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 SET
Host= '%' WHERE
User= '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