Назад | Перейти на главную страницу

MySQL не разрешает удаленные подключения с использованием Python3 mysql.connector на Raspbian-Stretch

Я пытаюсь разрешить подключения с помощью mysql.connector с определенного компьютера к MariaDB сервер в локальной сети.

В идеале я хотел бы создать учетную запись, ограниченную одним IP и БД.

Для простоты я попробовал следующий подход с использованием подстановочных знаков:

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 можно успешно перезапустить. Удаленные подключения теперь будут приниматься.

Кредит MichaelHampton