Python - 通过localhost连接MySQL无法工作,但是使用127.0.0.1可以正常工作?

3

我刚刚在VPS上设置了一个带有Mysql数据库的环境。我能够通过SSH终端登录到数据库中,使用命令mysql -uroot -p。但是下面展示的Python文件无法连接,并显示错误信息:Access denied for root@localhost (using password: YES)。我很困惑为什么会出现这种情况。我百分百确定我的密码是正确的。我正在使用mysql.connector。

Python文件:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  password="pwd",
  database="db"
)

mycursor = mydb.cursor()

sql = "INSERT INTO test (tests) VALUES (%s)"
val = ("testing")

mycursor.execute(sql, val)

mydb.commit()

我对数据库和虚拟专用服务器这些技术还不太了解,如果我第一次不能理解,请你耐心等待。

谢谢!


1
尝试使用 127.0.0.1 替代 localhost,看看是否有效。 - Don Dickinson
哇,太疯狂了!它成功了!!你能解释一下为什么这个方法有效而localhost不行吗?我以为它们是类似的。我花了三天时间才发现原来如此简单,哇。 - mistertwst
我猜这与DNS未能正确解析本地主机有关。我以前遇到过这种情况,但除了在hosts文件中将localhost映射到127.0.0.1之外,我不确定还有其他修复方法。 - Don Dickinson
1个回答

0

除了@don的回答之外

我猜这可能与dns没有正确解析localhost有关。我以前遇到过这种情况,但不仅仅是在主机文件中将localhost映射到127.0.01,

这也可以通过更改/etc/mysql/my.cnf文件中的一个值来修复。

很可能你的bind-address行是

bind-address = localhost 

你可以尝试将其更改为
bind-address = 127.0.0.1

你还可以将其设置为0.0.0.0,但这会将连接暴露给外部世界(包括公共IP),因此非常不推荐,但可以解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接