項目中須要鏈接虛擬機上面的MySQL數據庫,可是老是出錯,懷疑本機是否有鏈接遠程數據庫的權限。mysql
執行命令:sql
mysql> use mysql; mysql> select host,user from user;
查看結果是否是root用戶僅容許本地(localhost)登陸,下面這個截圖就是這種狀況:數據庫
是的話,就要修改它的host爲%
,表示任意IP地址均可以登陸。緩存
mysql> update user set host = '%' where user = 'root';
執行完後可能提示error。再mysql> select host,user from user;
查看下吧。服務器
root對應的host成了%
,表示能夠任意IP地址登陸了。spa
mysql> flush privileges;
把緩存flush掉,在使用update語句修改用戶記錄後,須要FLUSH語句告訴服務器重載受權表。code
MySQL默認在本地localhost登陸root用戶,然而遠程鏈接卻會報錯(root@X.X.X.X acess denied)cmd
這裏就須要進行配置容許遠程鏈接虛擬機
方式一:
進入mysql: mysql -uroot -p
運行mysql: use mysql;
開啓遠程訪問權限: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'amigo'
強制刷新權限: flush privileges;
關閉mysql: exit;
it
方式二:
進入mysql: mysql -uroot -p
運行mysql: use mysql;
查看用戶表: SELECT `Host`,`User` FROM user;
更新用戶表: UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1;
強制刷新權限: flush privileges;
關閉mysql: exit;
開啓關閉服務器防火牆:
查看防火牆是否開啓(若是顯示running,則防火牆爲開啓狀態):
firewall-cmd --state
關閉防火牆:
systemctl stop firewalld.service
開啓防火牆:
systemctl start firewalld.service
關閉開機自啓動:
systemctl disable firewalld.service
開啓開機自啓動:
systemctl enable firewalld.service