失败的代码:
mysql> grant update on *.* to 'user1';
ERROR 1410 (42000): You are not allowed to create a user with GRANT
正确的代码 :
mysql> grant reload on *.* to 'user1'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> grant select on db2.* to 'user1'@'localhost';
Query OK, 0 rows affected (0.00 sec)
这是我的报错原因,没有加localhost (主机名)
其他情况:
这里说的 给远程主机授权,报这个错误,无权限的情况怎么处理:
http://t.csdn.cn/vydKv
重点代码整理如下:
修改root用户的 host 为可以访问所有主机(打造一个真正的超级管理员),然后更新权限为拥有所有的权限,这里是必须要更新的,要不然还会报错。
1.
mysql> update mysql.user set host='%' where user='root' ;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
2.
mysql> flush privileges ; //刷新权限 不刷新直接操作后续代码。会报错,无权限。
mysql> grant all privileges on *.* to 'root'@'%' ; // 授予可管理所有数据库的所有表;
// 给其他用户授予权限
mysql> grant select on db2.* to 'user1'@'localhost' with grant option ;
//补充说明:
关于1:
所有root用户连接中会有 ' mysql' 数据库 ,所以数据库.表名的 代码为 mysql.user 。
mysql 中的user 表,即用户表,存储着所有用户的相关信息。user表很多列,获取常用字段展示,如下图:
// 图片为 Navicat 软件