【发布时间】:2020-01-02 10:54:32
【问题描述】:
我正在尝试使用 Python 3.7 使用 mysql.connector 的 8.0.18 版(通过 pip 作为 mysql-connector-python 包安装)连接到各种 MySQL 和 MariaDB 数据库。
在这个特定的实例中,我正在尝试连接到 MariaDB 5.5.52 实例,但在其他系统上似乎遇到了同样的问题。
如果我尝试这样连接:
cnx = mysql.connector.connect(user=c['user'], password=c['password'], host=c['host'], database=c['database'])
我明白了
mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user '<user name>'@'<ip address>' (using password: YES)
神秘的是,我可以使用客户端应用程序 (JetBrains DataGrip) 从同一台 PC 连接到相关数据库而不会出现任何问题,因此我确信凭据是有效的并且没有任何网络或阻止连接的类似问题(即端口 3306 已打开)。
我能找到的唯一共同因素似乎是 mysql.connector。我检查了手册,看起来语法是正确的。
更新 按照@makozaki 的建议使用不同的连接器(pymysql),代码可以工作。因此,问题肯定是 mysql.connector 。我可能会尝试将其回滚到以前的版本,看看是否可以修复它(除非有人知道解决方法)。
【问题讨论】:
-
如果您怀疑可能是连接器问题,那么您如何先测试其他连接器,例如pymysql,如果问题再次出现,那么可能是您拼错了您的凭据,或者您的用户有多个访问设置,其中一个没有适当的权限。
-
@makozaki Doh! 我怎么没想到呢!如果我使用 pymysql 连接器,那么它工作正常。最奇怪的。感谢您的建议。
-
我仍然会检查数据库用户权限。您尝试连接的用户可能有多个权限,其中一个可能不会授予适当的访问权限,例如'user@localhost' 与'user@127.0.0.1'。我检查了以前的连接器,它对我来说很好。