mysql用root用户给其他用户授权报错1044 access denied for user root

公司本地测试数据库一直使用root直接使用数据库,一直使用没问题

突然有一天,需要增加一个用户,并使用该用户进行操作数据库

在成功创建新用户后,开始想给用户授予最高权限,结果报错,1044 access denied for user root

我以为是无法创建同样的root用户

于是建了一个新数据库,newdb ,单独个新建用户增加newdb的权限,还是报错

最后,查看了一下,root自己的服务器权限,除了Grant option外其他权限都有,问题应该就在这里

解决办法:登录mysql服务器,本地登录Mysql

执行命令:

1、 mysql -uroot -p

2、 usemysql

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

4、 FLUSH PRIVILEGES;

一、用户授权
mysql> grant all privileges on *.* to 'yangxin'@'%' identified by 'yangxin123456' with grant option;

添加权限(和已有权限合并,不会覆盖已有权限)

GRANT Insert ON `your database`.* TO `user`@`host`;

删除权限

REVOKE Delete ON `your database`.* FROM `user`@`host`;


all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。
on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user
to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”yangxin”@”192.168.0.%”,表示yangxin这个用户只能在192.168.0IP段登录
identified by:指定用户的登录密码
with grant option:表示允许用户将自己的权限授权给其它用户
可以使用GRANT给用户添加权限,权限会自动叠加,不会覆盖之前授予的权限,比如你先给用户添加一个SELECT权限,后来又给用户添加了一个INSERT权限,那么该用户就同时拥有了SELECT和INSERT权限。

用户详情的权限列表请参考MySQL官网说明:http://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html

二、刷新权限
对用户做了权限变更之后,一定记得重新加载一下权限,将权限信息从内存中写入数据库。

mysql> flush privileges;


三、查看用户权限
mysql> grant select,create,drop,update,alter on *.* to 'yangxin'@'localhost' identified by 'yangxin0917' with grant option;
mysql> show grants for 'yangxin'@'localhost';


四、回收权限
删除yangxin这个用户的create权限,该用户将不能创建数据库和表。

mysql> revoke create on *.* from 'yangxin@localhost';
mysql> flush privileges;

原文地址:https://www.cnblogs.com/qumogu/p/13504082.html