MySQLdb: подключиться к MariaDB через сокет - PullRequest
0 голосов
/ 18 января 2019

У меня новая установка MariaDB без пароля. Подключение через mysql работает для пользователя root, без пароля и без каких-либо дополнительных параметров.

$ sudo -i root
$ mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Server version: 10.2.21-MariaDB-log MariaDB Server

Но подключение к сокету с использованием библиотеки Python MySQLdb завершается неудачно:

$ python
Python 2.7.5 (default, Sep 12 2018, 05:31:16) 
>>> import MySQLdb
>>> MySQLdb.connect(unix_socket='/var/lib/mysql/mysql.sock')
_mysql_exceptions.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: NO)")

Это проблема совместимости MariaDB и MySQL? Кто-нибудь может воспроизвести это?

1 Ответ

0 голосов
/ 18 января 2019

Это была не корневая учетная запись без пароля. Это был один с паролем по умолчанию. mysql просто прочитайте его автоматически из папки /etc/my.cnf.d/

[client]
socket   = /var/lib/mysql/mysql.sock
host     = localhost
user     = root
password = ...

Для отладки mysql CLI-поведения против поведения Python MySQLdb вы можете запустить

mysql --no-defaults

, который уже воспроизвел поведение для меня, поэтому я продолжил:

mysql --no-defaults --socket=/var/lib/mysql/mysql.sock
mysql --no-defaults --socket=/var/lib/mysql/mysql.sock --user=root

затем пришла идея покопаться глубже в папку /etc/my.cnf.d/.

...