mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'root'@'localhost' (使用

Posted

技术标签:

【中文标题】mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user \'root\'@\'localhost\' (使用密码: YES)【英文标题】:mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'root'@'localhost' (使用密码: YES) 【发布时间】:2021-03-04 07:04:51 【问题描述】:

我正在关注讲师的代码和视频。他有这个设置,我完全按照。他的作品,我的没有,我不知道为什么。它设置为用户“root”,密码为空。我试过 pip install mysql-connector-python。我想保持与他相同的用户名和密码,以便更好地跟进。我通过 Wampserver64 使用 python 和 mysql。当我尝试通过 cmd 运行 python 文件时,出现错误“mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)”。我是新手,所以我一直在努力解决这个问题。 (使用密码:YES)是否意味着密码匹配?以及如何让脚本连接到mysql?



db = mysql.connector.connect(
    host = "localhost",
    user= "root",
    password = " "
    #database ='datarepresentation'
)
        #print ("connection made")

cursor = db.cursor()

cursor.execute("CREATE DATABASE datarepresentation")

【问题讨论】:

您是否尝试过将password 设置为空str 与单个空格? password=""password=" " 是的。这导致“mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)” 【参考方案1】:

当我的朋友尝试在使用 MySQL 数据库设置的 Ubuntu Windows Linux 子系统中运行 python 脚本时,发生了同样的问题。

我们通过在 MySQL 8.0 命令行客户端中运行以下三个命令,然后重新启动机器以重新启动所有内容来解决此问题。我们在我们的项目中使用的是 Flask 而不是 Wamp,所以希望它也能正常工作。这些命令被发现here。

SELECT user, authentication_string, plugin, host FROM mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';
FLUSH PRIVILEGES;

根据 MySQL 文档(MySQL Documentation),它声明(使用密码:是)只是意味着您实际上正在使用密码。如果您尝试在不使用密码的情况下登录,它会说“不”。

至于如何将脚本连接到数据库,您几乎已经掌握了。您可以编写查询以从数据库中检索某些内容以进行检查。这是一个使用您提到的数据库检索某种数据并确保它在表中的示例。

cnx = mysql.connector.connect(
    host="localhost", 
    user='root', 
    password=" ", 
    database='datarepresentation')
cursor = cnx.cursor()
query = ("SELECT * FROM table-name WHERE key1 = %s")
dataName = 'randomValue'
cursor.execute(query, (dataName))
result = cursor.fetchone()
if result[0] == 1:
    return True
else:
    return False

【讨论】:

以上是关于mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'root'@'localhost' (使用的主要内容,如果未能解决你的问题,请参考以下文章