当前位置: 首页 > 知识库问答 >
问题:

尝试使用Connector/Python时,我收到错误“拒绝用户' root'@'localhost '访问”

孙阳旭
2023-03-14

我正在尝试使用python连接到我的本地mysql系统。

我注意到我只能通过sudo /usr/bin/mysql -u root -p从控制台登录到我的mysql系统

我浏览了网络,对所有的建议感到非常困惑,没有一个对我有用。

就像我试过的

mysql> SELECT User, Host, plugin FROM mysql.user;

这给了我...

+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | localhost | mysql_native_password |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
| keith            | localhost | mysql_native_password |
+------------------+-----------+-----------------------+

5 rows in set (0.12 sec)

import mysql.connector

cnx = mysql.connector.connect(user='root', password='#########',
                          host='127.0.0.1',
                          database='SurveyData')
cnx.close()

我收到以下错误

MySQLInterfaceError                       Traceback (most recent call last)
~/miniconda3/lib/python3.7/site-packages/mysql/connector  /connection_cext.py in _open_connection(self)
    199         try:
--> 200             self._cmysql.connect(**cnx_kwargs)
    201         except MySQLInterfaceError as exc:

MySQLInterfaceError: Access denied for user 'root'@'localhost'

During handling of the above exception, another exception occurred:

共有2个答案

翟高明
2023-03-14

看来你用root@localhost然后连接。你试过root@127.0.0.1吗?

另请检查:用户“root”@“localhost”的访问被拒绝(使用密码:是)-没有权限?

通过命令行向用户帐户授予全局权限。打开终端并运行以下命令。

:~$ mysql -u root -p
Enter password: 
mysql> GRANT SELECT ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

授予用户帐户特殊的模式权限。在命令下打开终端运行。

:~$ mysql -u root -p
Enter password: 
mysql> GRANT SELECT,UPDATE,INSERT,DELETE ON SurveyData.* TO 'root'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON SurveyData.* TO 'root'@'localhost';
Query OK, 0 rows affected (0.00 sec)

我使用这个脚本进行测试:

try:
    connection = mysql.connector.connect(host='localhost',
                                         database='SurveyData',
                                         user='root',
                                         password='########')

    if connection.is_connected():
        db_Info = connection.get_server_info()
        print("Connected to MySQL Server version ", db_Info)
        cursor = connection.cursor()
        cursor.execute("select database();")
        record = cursor.fetchone()
        print("Your connected to database: ", record)

except Error as e:
    print("Error while connecting to MySQL", e)
finally:
    if (connection.is_connected()):
        cursor.close()
        connection.close()
        print("MySQL connection is closed")
邓韬
2023-03-14

使用根用户登录可以被认为是一种“潜在风险”,这解释了为什么通过该用户的任何连接都会被阻止。因此,解决方案是创建一个新用户,并授予他们所有权限。

mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'newpassword';    
mysql> GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
 类似资料:
  • 问题内容: $ ./mysqladmin -u root -p ‘ 编辑 ‘ 输入密码: mysqladmin:在“ localhost”处连接到服务器失败错误: “对用户“ root” @“ localhost”的访问被拒绝(使用密码:是) 我怎样才能解决这个问题? 问题答案: 打开并编辑或,具体取决于您的发行版。 添加下 重启MySQL 您现在应该可以使用以下命令登录mysql 跑 设置新密码

  • $./mysqladmin-u root-p“redacted” 输入密码: mysqladmin:连接到“localhost”的服务器失败错误: “拒绝用户”root“@"localhost”的访问(使用密码:YES)“ 我该怎么解决这个?

  • 我正在设置一个新的服务器,但一直遇到这个问题。 当我尝试使用root用户登录MySQL数据库时,我得到了以下错误: 错误1698(28000):拒绝用户'root'@'localhost'的访问 不管我是通过终端(SSH)连接,还是通过PHPMyAdmin或MySQL客户端(例如Navicat)连接。他们都失败了。 我查看了mysql.user表,得到了以下信息: 如您所见,root用户应该具有访

  • 问题内容: $ ./mysqladmin -u root -p ‘ 编辑 ‘ 输入密码: mysqladmin:在“ localhost”处连接到服务器失败错误: “对用户“ root” @“ localhost”的访问被拒绝(使用密码:是) 我怎样才能解决这个问题? 问题答案: 打开并编辑或,具体取决于您的发行版。 在下添加 重启MySQL 您现在应该可以使用以下命令登录mysql 跑 设置新密

  • 问题内容: 我正在设置新服务器,并继续遇到此问题。 当我尝试以root用户登录MySQL数据库时,出现错误: 错误1698(28000):用户’root’@’localhost’的访问被拒绝 是否通过终端(SSH),PHPMyAdmin或MySQL客户端(例如Navicat)连接都没有关系。他们都失败了。 我在mysql.user表中查看了以下内容: 如您所见,root应该具有访问权限。 该服务器

  • 错误1045(28000):拒绝用户'root'@'localhost'的访问(使用密码:Y ES) 这个错误是什么意思?