我的伺服器買的是阿裡雲ECS linux系統。為了更好的操作資料庫,我希望可以用navicat for mysql管理我的資料庫。 當我按照正常的模式去鏈接mysql的時候, 報錯提示: 於是,通過查找資料,我找到瞭解決的方法,其實是阿裡雲伺服器為了安全預設不允許從外面鏈接Mysql資料庫。 下麵是 ...
我的伺服器買的是阿裡雲ECS linux系統。為了更好的操作資料庫,我希望可以用navicat for mysql管理我的資料庫。
當我按照正常的模式去鏈接mysql的時候,
報錯提示:
2003- Can't connect MySQL Server on 'x.x.x.x'(10038)
於是,通過查找資料,我找到瞭解決的方法,其實是阿裡雲伺服器為了安全預設不允許從外面鏈接Mysql資料庫。
下麵是解決整理的三種解決的方法:
第一種、監聽地址配置錯誤解決方法:
檢查mysql服務埠(預設為3306)是否正常監聽在127.0.0.1上,如果監聽在127.0.0.1上那隻允許伺服器本身訪問的,其他地址是訪問不了的,可以通過下麵方法來確定埠監聽以及修改監聽地址;
#netstat -nal |grep 3306 //查看3306埠監聽情況,如果監聽埠在127.0.0.1上,需進行更正。
#find / -name my.cnf //查找MySQL配置文件路徑
#vim /etc/my.cnf //編輯配置文件,將bind-address = 127.0.0.1參數,更改為bind-address = 0.0.0.0 或註釋此行。
重啟mysql服務(centos7以上為以下命令)
systemctl restart mysqld
問題解決。
第二種、被防火牆阻攔解決方法:
如果排查mysql服務監聽在0.0.0.0地址3306埠上,需檢查防火牆設置。如果是被防火牆攔截,需開放資料庫服務埠。
註意:此處有坑。
第一步:我們可以關閉防火牆,看看外部可不可以鏈接。
service iptables stop
如果是centos7以上用以下命令關閉防火牆
systemctl stop iptables (我遇到問題關閉防火牆就解決了)
第二步:當關閉防火牆可以訪問的時候,問題就出現在我們的埠上。打開埠配置文件,仔細看看是不是3306埠。我就沒看清楚,寫的是3066,整的我把資料庫重新安裝還沒解決問題。
vi /etc/sysconfig/iptables
下麵接著來:
iptables -L iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
第三種、USER表配置錯誤解決方法:
監聽地址和防火牆檢查無誤,需進入mysql資料庫內部,檢查USER表是否沒有放開遠程訪問。如果沒有開啟遠程訪問,開啟即可。
mysql> use mysql; //進入到mysql庫中
mysql> update user set host = '%' where user = 'root'; //更改USER這張表中的訪問地址為% mysql> select host, user from user; //查看是否更改成功
同時還需要向mysql資料庫里的“user”表裡對某個用戶添加相關授權(以下是對root用戶添加所有許可權操作並設置登錄密碼)。
具體步驟:
1.授權
mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%′ IDENTIFIED BY ‘newpwd’ WITH GRANT OPTION;
2.刷新許可權使其生效
mysql>flush privileges;
配置完成之後記得重啟伺服器。