上面不是有寫 .... 連不到 127.0.0.1 的 mysql 嗎 ?
請用標準的 mysql 指令 看看能不能連 可連線 再試 python .....
mysql client 不能連 mysql Seever 那你要先搞定 mysql 再來學 python 連 mysql
mysql -h 127.0.0.1 -uroot -ptest123 TESTDB
正常 python 我會用 localhost 去連 ... localhost 與 127.0.0.1 是不同的
import pymysql
db = pymysql.connect("localhost","root","test123","TESTDB" )
cursor = db.cursor()
cursor.execute("SELECT VERSION()")
data = cursor.fetchone()
print ("Database version : %s " % data)
db.close()
MySQL一般的預設 port 都是 3306
不過為什麼你的 connection 可以不用指定 port
Python 的黑科技 ?
Windows的話先使用HeidiSQL之類的測試看看能不能連,
可以再使用Python.
另外也沒看到詳細的程式碼.
這個錯誤訊息是 MySQL ERROR 2003
google mysql error 2003 , 就能看到好幾種原因了,與解決方法.
Python 的 MySQL 連線模組,也是呼叫 MySQL Client lib.
會逐級拋出錯誤代碼.看錯誤代碼,然後設法排除.
當你使用 MySQL Client 程式 (mysql -u user -p) ,
是走 socket file 連線,所以你能連線.
但不代表用 127.0.0.1 或是 localhost 能連線. 或是有防火牆擋住了.
你也可以改用 unix_socket 連線方式,試試看.
寫了個用 unix_socket 連線測試的程式
#!/usr/local/bin/python3
import pymysql
con = pymysql.connect(unix_socket='/tmp/mysql.sock',
user='julia',password='Julia#567',database='julia')
with con:
cur = con.cursor()
cur.execute("select version()")
row = cur.fetchone()
print(row[0])
cur.close()
執行結果:
| => chmod +x pymysql1.py
____________ [23:38:17] ~/work/m1911/d1113
| => ./pymysql1.py
8.0.18
你參考看看
從錯誤碼來看是連不到你的資料庫。
由於2003錯誤碼是連連接都連接不上。所以可以暫時排除帳密的問題
也可以先不用理會權限的問題。
那為何連接不上去的原因就有如下了。
1.mysql伺服器未啟動:這個問題的可能性會比較大。可以先直接下命令mysql -uroot -p你的密碼。
看能否正常進去mysql命令列。如果可以正常進入因該會看到
Mysql>
這樣的介面出現,如果沒有,且有出現錯誤訊息的情況下。代表你的mysql其實還未啟動。先解決這個問題吧
2.防火問題:認真來說,這個問題的可能性會比較小。因為你是用127.0.0.1的情況下。一般來說防火的預設不可能會擋本機ip的。除非有特別去做限制。所以我第一優先不會先考量防火的問題。
3.其它問題:如mysql使用權限或是運行權限的問題。不過這比較難碰到就是了。
可以請問一下要怎麼啟動mysql?
網路上查了一些方法可是問題還是一樣
而我開command line 時直接輸入密碼是可以進去的
我是下載mysql workbench 8.0 的
如果我在cmd上打net start mysql80就有錯誤
改成在管理員模式進行
而不是顯示:
mysql80 服務正在啟動
mysql80 服務已經啟動成功
你可以先試試上面一些大大的程式碼先試連看看好了。
目前看起來你的mysql因該是有正常啟動才對。
那剩下來的就是py的連線處理問題。
我對py並不是很熟。所以沒辦法給你很好的意見。
剛看了上面一些大大們寫的。我擔心會有如大大們說的。py得要用額外的連結方式才行。畢竟我對py並非熟門熟路。我就不獻醜了。