首页 > 解决方案 > MySQLdb:通过套接字连接到 MariaDB

问题描述

我有一个全新的 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 的兼容性是否存在问题?任何人都可以复制它吗?

标签: pythonmariadbmysql-python

解决方案


它不是无密码的 root 帐户。这是一个有默认密码的。 mysql只需从 /etc/my.cnf.d/ 文件夹中自动读取

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

要调试mysqlCLI 行为与 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/ 文件夹的想法。


推荐阅读