python - 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 的兼容性是否存在问题?任何人都可以复制它吗?
解决方案
它不是无密码的 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/ 文件夹的想法。
推荐阅读
- ionic-framework - Ionic 3 不会在文件更改时重建
- python - 为什么像这样传递 lambda 函数的参数?
- javascript - 如何在 Web App Javascript 上检测用户首次登录 Firebase
- c# - xUnit测试asp net core Mapper未初始化
- c# - 组合框背景颜色绑定
- javascript - 为什么 HTML 说我的变量没有定义?
- flutter - AppBar 和 Drawer 布局的最佳实践:重用 vs “复制/粘贴”
- google-apps-script - 我可以在我的 Google 云端硬盘中创建图片列表(包括文件名和共享链接)吗?
- jquery - 在元素上的关键帧动画之后通过jQuery切换不透明度
- git - 如何撤消 repo 并将其转换为常规目录