当我尝试使用python mysql.connector 版本8.0.15访问mysql服务器(MariaDB v10.1.37)时遇到问题。
我试图从数据库中读取数据,但是尝试连接mysql服务器时出现错误。
python脚本的代码是:
import mysql.connector
from mysql.connector import errorcode
mysql_config = {
'user':'xpto',
'password':'1234',
'host':'127.0.0.1', # I tried too 'localhost'
'port':3306, # I tried too '3306'
'database':'manta'
}
print(mysql.connector.__version__)
conn = mysql.connector.connect(**mysql_config)
conn.close()
我得到的错误是:
mysql.connector.errors.ProgrammingError:1045(28000):访问被拒绝 用户“ xpto” @“ localhost”(使用密码:是)
所以我开始调试代码。
要检查我的mysql是否正在运行:
我用telnet和netstat快速检查了mysql端口是3306。
我的用户的特权是:
+-----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for xpto@localhost |
+-----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'xpto'@'localhost' IDENTIFIED BY PASSWORD '*F1D0B735317D750FFFFD3FE51E571EFBF4FFFF1D' WITH GRANT OPTION |
+-----------------------------------------------------------------------------------------------------------------------------------------+
通过脚本python在我的数据库上写的另一种方法是执行一个子进程:
from subprocess import Popen, STDOUT
p = Popen(["mysql", "-u", "xpto", "-p1234"],
stdin=PIPE, stderr=STDOUT)
p.communicate(b"exit")
if p.returncode != 0:
print('incorrect password')
我执行此脚本没有任何问题。
另一种方法是将我的python脚本的权限更改为777,但错误仍然存在。
更多信息:
我在/ opt / lampp / htdocs /上下文中运行我的php脚本,在〜/ Desktop上下文中运行python脚本。
问题:
因此,我尝试了解为什么我无法使用mysql.connector连接到mysql服务器。
为什么会发生错误?我正在传递正确的用户名和密码。
拜托,您能帮我了解问题发生的原因吗?