Mysql

MySQL 不允許在 Raspbian-Stretch 上使用 Python3 mysql.connector 進行遠端連接

  • December 13, 2018

我正在嘗試允許使用 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程序。現在將接受遠端連接。

感謝邁克爾漢普頓

引用自:https://serverfault.com/questions/942741