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 #設置防火墻開機啟動

You May Also Like