MySQLdb:通过套接字连接到MariaDB

时间:2019-01-18 14:53:31

标签: python mariadb mysql-python

我已经重新安装了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 :(得分:0)

它不是无密码的root帐户。这是一个带有默认密码的密码。 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/文件夹的想法。