“我犯了错误”;拒绝用户访问';根'@';“本地主机”;尝试使用Connector/Python时

“我犯了错误”;拒绝用户访问';根'@';“本地主机”;尝试使用Connector/Python时,python,mysql,connector,Python,Mysql,Connector,我正在尝试使用python连接到我的本地mysql系统 我注意到我只能通过以下方式从控制台登录mysql系统: sudo/usr/bin/mysql-u root-p 我环顾了一下网络,对所有的建议都感到非常困惑,这些建议对我来说都不管用 就像我试过的 mysql> SELECT User, Host, plugin FROM mysql.user; 这让我 我得到以下错误 看来你用的是root@localhost然后连接。你试过了吗root@127.0.0.1? 另外,请查看

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

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

我环顾了一下网络,对所有的建议都感到非常困惑,这些建议对我来说都不管用

就像我试过的

mysql> SELECT User, Host, plugin FROM mysql.user;
这让我

我得到以下错误


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

另外,请查看:

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

:~$ 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)
向用户帐户授予特殊架构权限。 打开终端运行下面的命令

:~$ 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)
我使用此脚本进行测试:

试试看:
connection=mysql.connector.connect(host='localhost',
数据库='SurveyData',
user='root',
密码=''.'.'.'.'.'.'.'.'.'.'.'')
if connection.is_connected():
db_Info=connection.get_server_Info()
打印(“连接到MySQL服务器版本”,数据库信息)
cursor=connection.cursor()
cursor.execute(“选择数据库();”)
record=cursor.fetchone()
打印(“已连接到数据库:”,记录)
除错误e外:
打印(“连接MySQL时出错”,e)
最后:
if(connection.is_connected()):
cursor.close()
连接。关闭()
打印(“MySQL连接已关闭”)

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

mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'newpassword';    
mysql> GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';

请不要发布密码,您是否尝试过创建具有数据库特定权限的用户?我尝试了以下方法,并放弃尝试格式化,我在每行中放置了4个空格,但没有处理。mysql>授权选择打开。使用GRANT选项创建“根”@“本地主机”;查询确定,0行受影响(0.00秒)mysql>将SurveyData.*上的所有权限授予“root”@“localhost”;查询确定,受影响的0行(0.00秒)mysql>将SurveyData.*上的选择、更新、插入和删除授予“根”@“本地主机”;查询确定,0行受影响(0.00秒)mysql>显示根的授权->;错误1141(42000):没有为主机“%”上的用户“root”定义此类授权。不确定修复了哪些问题,但现在通过用户keithWhat访问ok您运行的是什么OS版本和SQL版本?
mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'newpassword';    
mysql> GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';