我在脚本中使用python mysql.connector模块时遇到问题。当我从脚本运行连接到运行mysql v8的docker容器时,它试图连接到错误的ip地址。下面是示例函数:
import mysql.connector
def connect():
db = mysql.connector.connect(
host="172.17.0.2",
user="user",
passwd="password",
auth_plugin='mysql_native_password')
运行此操作时,会产生以下错误:mysql.connector.errors.programmingerror:1045(28000):用户'user'@'172.17.0.1'的访问被拒绝(使用密码:yes)
这是我试图连接到的docker容器的ip
ipaddress:“172.17.0.2”
真正有趣的是,在交互式python会话中使用mysql.connector时,我可以很好地连接到数据库。见下文
Python 3.7.2 (default, Jan 16 2019, 19:49:22)
[GCC 8.2.1 20181215 (Red Hat 8.2.1-6)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import mysql.connector
>>> db = mysql.connector.connect(
... host="172.17.0.2",
... user="user",
... passwd="passwd",
... auth_plugin='mysql_native_password')
>>> mycursor = db.cursor()
>>> mycursor.execute("show databases")
>>> for x in mycursor: print(x)
...
('food',)
('information_schema',)
这是我在Fedora29上运行的mysql连接器的版本
pip list |grep mysql-connector
mysql-connector-python 8.0.15
这里是docker版本信息
Client:
Version: 18.09.2
API version: 1.39
Go version: go1.10.6
Git commit: 6247962
Built: Sun Feb 10 04:13:54 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.2
API version: 1.39 (minimum version 1.12)
Go version: go1.10.6
Git commit: 6247962
Built: Sun Feb 10 03:47:25 2019
OS/Arch: linux/amd64
Experimental: false
有没有想过是什么导致从脚本运行此脚本失败?
1条答案
按热度按时间u5i3ibmn1#
脚本不会尝试连接到错误的ip。错误消息
表示该用户
user
这是通过这个主机发送的172.17.0.1
将无法连接到您试图访问的数据库172.17.0.2
. 您需要做的是允许从主机进行远程mysql连接172.17.0.1
对于此用户user
这将使脚本能够按预期工作。更新:不确定这是否相关,但python脚本显示密码是
password
控制台显示密码为passwd
. 如果已允许远程访问,请确保键入的密码正确