错误1044(42000):具有所有特权的“ root”访问被拒绝

我有一个奇怪的错误。我通过命令行以root用户身份登录到本地Mysql。创建数据库后:

create database some_db;

然后给某些用户特权:

grant all privileges on some_db.* to some_user@'localhost' identified by 'password';

这给出了错误:

ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'some_db'

根目录的权限(显示授予;)显示:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*8919C53DC7A4DFBF3F8584382E96463583EB7FDA'

我还要确保以root用户身份登录:

select current_user();

这确认我以“ root” @“ localhost”的身份登录

我已经创建了数据库并多次分配了用户,但从未遇到问题。为什么以root用户身份登录时无法将用户分配给root用户创建的数据库?

PS从其他职位,我想这个问题可能是由于一些奇怪的用户引起的

select host, user from mysql.user;

我尚未添加但确实出现的一些用户:

 MY_COMPuTER_name.local |       ''

MY_COMPuTER_name.local | root

我试图删除这些用户

drop user 'root'@'MY_COMPuTER_name.local';

drop user ''@'MY_COMPuTER_name.local';

但是,尽管状态查询成功运行,但即使具有刷新特权也不会删除用户。为什么我无法删除用户?任何帮助都非常有用

回答:

首先,将您登录的用户标识为:

 select user();

select current_user();

第一个命令的结果是您尝试登录时的身份,第二个命令是您实际连接时的身份。确认您root@localhost以mysql 身份登录。

Grant_privroot@localhost。这是您可以检查的方式。

mysql> SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user;

+-----------+------------------+-------------------------------------------+------------+------------+

| host | user | password | Grant_priv | Super_priv |

+-----------+------------------+-------------------------------------------+------------+------------+

| localhost | root | ***************************************** | N | Y |

| localhost | debian-sys-maint | ***************************************** | Y | Y |

| localhost | staging | ***************************************** | N | N |

+-----------+------------------+-------------------------------------------+------------+------------+

您可以看到,对于root @ localhost,Grant_priv设置为N。必须为Y。下面是解决方法:

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';

FLUSH PRIVILEGES;

GRANT ALL ON *.* TO 'root'@'localhost';

我重新登录,一切正常。

以上是 错误1044(42000):具有所有特权的“ root”访问被拒绝 的全部内容, 来源链接: utcz.com/qa/402973.html

回到顶部