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

brtdzjyr  于 2021-06-26  发布在  Hive
关注(0)|答案(4)|浏览(385)

我有个奇怪的错误。我通过命令行以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'

根目录的权限(show grants;)显示:

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

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

select current_user();

这将确认我以“root”@“localhost”身份登录
我已经创建数据库和分配用户多次,从来没有一个问题。为什么在以root身份登录时无法将用户分配给root创建的数据库?
p、 从其他帖子来看,我认为这个问题可能是由于一些陌生用户引起的

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';

但是,虽然它表示query run successful,但即使在刷新权限之后,用户也不会被删除。为什么我不能删除用户?任何帮助都是值得的

tvz2xvvm

tvz2xvvm1#

我不能通过'drop'语句删除一些用户的原因是mysql中有一个bughttp://bugs.mysql.com/bug.php?id=62255 主机名包含大写字母。解决方案正在运行以下查询:

DELETE FROM mysql.user where host='Some_Host_With_UpperCase_Letters';

我仍在试图找出另一个问题,即拥有所有权限的根用户无法为特定数据库向新用户授予权限

a14dhokn

a14dhokn2#

如果尝试在mysql(安装在xampp服务器上)cmd提示符下运行sql命令时出现错误1044(42000),那么解决方案如下:
关闭mysql命令提示符。
打开cmd提示符(从“开始”菜单->运行->cmd),将显示:c:\users\user>_
通过键入以下命令转到mysql.exe: C:\Users\User>cd\ C:\>cd xampp C:\xampp>cd mysql C:\xxampp\mysql>cd bin C:\xampp\mysql\bin>mysql -u root 现在尝试通过键入以下内容创建新数据库:

mysql> create database employee;

如果显示:

Query OK, 1 row affected (0.00 sec)
mysql>

那恭喜你!你可以走了。。。

polhcujo

polhcujo3#

首先,确定您登录的用户:

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. 这个应该是y。下面是如何修复此问题:

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';

我重新登录,一切正常。

nbysray5

nbysray54#

尝试注解文件my.cnf中的字符串“sql mode=…”,然后重新启动mysql。

相关问题