错误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_priv
到root@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