【问题标题】:MySQLdb: connect to MariaDB via socketMySQLdb:通过套接字连接到 MariaDB
【发布时间】:2019-06-12 20:41:03
【问题描述】:

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

【问题讨论】:

    标签: python mariadb mysql-python


    【解决方案1】:

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

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

    要调试mysql CLI-behaviour vs. 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/ 文件夹的想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 1970-01-01
      • 2017-11-07
      相关资源
      最近更新 更多