python mysql.connector 模块使用了错误的 IP 地址
python mysql.connector module uses wrong IP address
我在脚本中使用 python mysql.connector 模块时遇到问题。当我从我的脚本 运行 连接到 docker 容器 运行 mysql v8 时,它会尝试连接到错误的 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 地址
IP 地址": "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',)
这是我在 Fedora 29运行 上 mysql-connector 的版本
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
有什么想法会导致脚本中的 运行 失败吗?
脚本不会尝试连接到错误的 IP。错误信息
mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'user'@'172.17.0.1' (using password: YES)
意味着通过此主机 172.17.0.1
访问的此用户 user
将无法连接到您试图在 172.17.0.2
上访问的数据库。
您需要做的是从主机 172.17.0.1
为该用户 user
allow remote MySQL connection,这将使脚本能够按预期工作。
更新:
不确定这是否相关,但 python 脚本显示密码为 password
,控制台显示密码为 passwd
。如果已允许远程访问,请确保您输入的密码正确
我在脚本中使用 python mysql.connector 模块时遇到问题。当我从我的脚本 运行 连接到 docker 容器 运行 mysql v8 时,它会尝试连接到错误的 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 地址
IP 地址": "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',)
这是我在 Fedora 29运行 上 mysql-connector 的版本
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
有什么想法会导致脚本中的 运行 失败吗?
脚本不会尝试连接到错误的 IP。错误信息
mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'user'@'172.17.0.1' (using password: YES)
意味着通过此主机 172.17.0.1
访问的此用户 user
将无法连接到您试图在 172.17.0.2
上访问的数据库。
您需要做的是从主机 172.17.0.1
为该用户 user
allow remote MySQL connection,这将使脚本能够按预期工作。
更新:
不确定这是否相关,但 python 脚本显示密码为 password
,控制台显示密码为 passwd
。如果已允许远程访问,请确保您输入的密码正确