1. 程式人生 > >python遠端連結Mysql報錯pymysql.err.OperationalError的處理

python遠端連結Mysql報錯pymysql.err.OperationalError的處理

import pymysql

conn = pymysql.Connect(host='192.168.255.255',user='laicheng',passwd='135246',db='test_sql')
cur = conn.cursor()
cur.execute("select version()")
for i in cur:
    print(i)
cur.close()
conn.close()

上面一段為python連結資料庫test_sql的一段測試程式碼。這裡的

報錯pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on,,

經過多處資料查詢找到原因如下:

1.首先確定輸入的賬戶和密碼是正確的,在MySQL建立賬戶密碼命令如下:

GRANT USAGE ON*.*TO'laicheng'@'%'IDENTIFIED BY '135246'WITH GRANT OPTION;

新增user=laicheng,passwd=135246的使用者

2.確定輸入的host是否正確,檢視伺服器host命令:ifconfig

這裡黑色塗抹處為ip地址也就是host要填入的資料,我這裡假設為192.168.255.255.

3.確認網路是否是通的:ping www.baidu.com如果返回資料沒問題那就是通的。

4.防火牆埠3306開啟(這是MySQL的埠),開啟MySQL的3306埠:

4.1、關閉firewall:
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl mask firewalld.service

4.2、安裝iptables防火牆
yum install iptables-services -y

安裝時我的Centos7又報錯,處理辦法如下:

錯誤為:沒有可用軟體包 iptables-services-y。

解決辦法:

安裝iptables-services軟體包:yum install iptables-services

在引導時啟用iptables服務:systemctl enable iptables

啟動iptables服務:systemctl start iptables

儲存防火牆規則:service iptables save

4.3啟動設定防火牆

systemctl enable iptables
systemctl start iptables

4.4檢視防火牆狀態

systemctl status iptables

4.5編輯防火牆,增加埠
vi /etc/sysconfig/iptables #編輯防火牆配置檔案
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

進去按i編輯文字編輯好後:wq儲存退出。

4.6.重啟配置,重啟系統
systemctl restart iptables.service #重啟防火牆使配置生效
systemctl enable iptables.service #設定防火牆開機啟動

參考資料:
http://blog.csdn.net/zhldt2008/article/details/52626892

http://blog.csdn.net/csdn_lqr/article/details/53885808