程式碼如下
db = pymysql.connect(host = "127.0.0.1",port = 3306 ,user= "root", passwd="test123",db='test', charset='utf8' )
cursor = db.cursor()
cursor.execute("SELECT VERSION()")
data = cursor.fetchone()
print (data)
db.close()
不過每次執行都會出現這樣的ERROR
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)")
在Workbench上連線是成功的
在電腦上執行也可以連上去
不過在放上應用去連的時候就會一直產生錯誤,也不太清楚問題出在哪裡,希望有人能夠幫忙回答,謝謝
現在才看到這個問題,
解決了嗎?
首先,pymysql連結本機時,一般我用"localhost"
您用 "127.0.0.1"應該也可以
不過,這應該不是報錯的主因
建議您先用 SELECT user, host FROM mysql.user;
查一下,您有幾個 root
通常會有兩個:root@127.0.0.1 與 root@localhost
我習慣會刪掉一個(root@127.0.0.1),若您兩個都有
那就應該沒問題。
其次,無法登入MySQL 8.0,或登入逾時的問題
主要應該是MySQL 8.0的密碼認證方式改為caching_sha2_password
所以,改一下要連結帳號的密碼認證方式為mysql_native_password就可以了
以您的例子,
在 mysql> 下,輸入:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test123';
或
ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'test123';
應該就可以了
您也可以在 my.cnf 裡面加入下面這一行
default_authentication_plugin=mysql_native_password
不過,這只對新開的帳號有效
既有的帳號還是要用 ALTER 指令修改。