今天在本地鏈接虛擬機上的MySql,然而鏈接失敗了!甚是尷尬!
首先想一想是什么原因導致鏈接失敗;
基礎環境:在Linux上安裝mysql
1、檢查虛擬機IP在本地是否可以ping 通過
虛擬機IP:192.168.217.129
本地執行一下,沒有問題
2、檢查虛擬機Mysql的端口是否對外開放(這個必須要開放)
比如我們能用xshell等遠程工具連接虛擬機上的linux,是因為開放了22端口
查看mysql的端口,在mysql命令行模式下執行以下命令就可以查看,查到的結果是3306
查看虛擬機的3306端口是否開放
cmd下執行telnet 192.168.217.129 3306
無法執行,別方,這是因為Windows telnet默認是關閉的
重新打開cmd窗口執行命令,結果是無法連接,這是因為虛擬機上的3306並沒有對外開放,可以用22的試下效果就知道了
3、開通虛擬機的3306端口
查看虛擬機防火牆的狀態
service iptables status
可以看到目前只有22端口對外開放
編輯防火牆文件打開3306端口
vim /etc/sysconfig/iptables
模仿22端口開放命令添加如圖所示的一行即表示對外開放3306端口
重啟防火牆
service iptables restart
可以看到3306已經開放
4、遠程連接虛擬機數據庫訪問
端口都開啟了,但還是連不上,看提示說明至少已經關聯到mysql,不允許是因為權限不夠
原因:一般mysql是不允許除了本機用戶以外的用戶進行訪問的,所以需要給特定ip的用戶開放權限,通過這個用戶去訪問連接
創建用戶並附有所有權限
create user 'cici'@'%' identified by '123123'; grant all on *.* to 'cici'@'%'; flush privileges;
重新使用cici鏈接數據庫,成功了!!