MySQL 不允許在 Raspbian-Stretch 上使用 Python3 mysql.connector 進行遠端連接
我正在嘗試允許使用 mysql.connector 從特定機器連接到本地網路中的MariaDB伺服器。
理想情況下,我想創建一個僅限於單個 IP 和 DB 的帳戶。
為簡單起見,我嘗試了以下萬用字元方法:
CREATE USER 'foo'@'%' IDENTIFIED BY 'foobar'; GRANT ALL PRIVILEGES ON *.* TO 'foo'@'%' WITH GRANT OPTION;
SELECT user,host FROM mysql.user WHERE user='foo';
+--------+-----------+ | user | host | +--------+-----------+ | foo | % | +--------+-----------+
使用這個基本的 Python 測試腳本:
import mysql.connector class DBConnect: def __init__(self): config={ 'user':'foo', 'password':'foobar', 'host':'192.168.x.xxx', 'port':3306, 'database':'foo', 'raise_on_warnings':True } self.__db=self.__connect(config) def __connect(self,config): try: return mysql.connector.connect(**config) except mysql.connector.Error as err: print(str(err)) return False db=DBConnect()
我收到以下錯誤:
1130: Host '192.168.x.xxx' is not allowed to connect to this MariaDB server
我已閱讀有關更改綁定地址的資訊並遵循各種設置指南,例如MySQL 文件中添加新使用者的指南,但我仍然無法成功連接。
綁定地址可以在
50-server.cnf
文件中找到。它設置為127.0.0.1
但如果更改為,例如,0.0.0.0
伺服器重啟失敗:
systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start MariaDB 10.1.37 database server
skip-networking
不存在於任何配置文件中將綁定地址設置為
127.0.0.1
執行netstat -anp | grep 3306
返回:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1790/mysqld
tcp 0 0 192.168.x.xxx:3306 0.0.0.0:* LISTEN 19490/mysqld
這讓我相信數據庫伺服器確實在監聽區域網路內的連接?
任何幫助深表感謝!
停止這兩個
mysqld
程序將允許50-server.cnf
修改文件。然後可以成功重新啟動mysql程序。現在將接受遠端連接。
感謝邁克爾漢普頓