客戶端不能連接MySQL
場景:
數據庫(此處以MySQL為例)安裝在虛擬機里面,在宿主機上進行連接數據庫的時候始終不能連接,但在虛擬機中使用正常。
針對上面的場景:
1. 在虛擬機里面可以正常使用MySQL
2. 在宿主機上進行連接的時候,始終不能連接
解決方案:
第一步:檢查賬號是否支持遠程鏈接?
相關操作指令:
# mysql -uroot -p 使用root用戶鏈接mysql
# show databases 查看已有的數據框(主要是為了找:mysql 這個數據庫)
# use mysql 使用mysql這個數據庫
# select user,password,host from user; 查詢已有的數據庫賬號
注意:
一定要有那個帶有%的一條記錄。
% 表示:允許所有的ip進行連接,如果這里是一個ip地址:192.168.1.100,也就說,允許192.168.1.100這個ip的電腦進行連接。
如果沒有這條記錄,需添加(即:創建賬號或者進行修改賬號的host為%),這里進行添加 :
# insert into user(user,password,host) values('learn',password('learn'),'%')
# commit;
# grant all privileges on learn.* to learn@'%'; 將learn這個數據庫的所有操作權限給learn這個用戶
# flush privileges;
第二步:檢查 防火牆(linux)是否關閉?或者釋放了3306(如果防火牆關閉了,就無需釋放)
解決方法一:直接關閉防火牆,如下
# firewall-cmd --state
如果是開着的,直接關閉,使用指令,
# systemctl stop firewalld
如果把防火牆關閉了,就可以直接連接mysql了
但是每次重啟或者關機后還要重新來 一遍,麻煩,所以我用方法二,開放MySQL專用的端口3306就可以了啊
解決方法二:開放MySQL專用的端口3306,如圖
查看是否已經開放3306端口
firewall-cmd --query-port=3306/tcp
開放端口3306
firewall-cmd --permanent --add-port=3306/tcp
重啟防火牆
firewall-cmd --reload
問題解決
以上兩步基本上就可以解決問題了。
上面的指令是針對CentOS 7.x版本的。