创建用户
insert into mysql.user(Host,User,Password) values("localhost","test",password("123456"));
create user 'test'@'localhost' identified by '123456';
grant all privileges on db.* to 'test'@'localhost' identified by '123456';
删除用户
Delete FROM user Where User='test' and Host='localhost';
删除用户并取消权限
drop user 'test'@'localhost';
将删除user表的用户数据
将删除db表和table_priv表的权限数据
将权限授予一个已存在的用户
grant all privileges on db.* to 'test'@'localhost'
将权限授予用户
如果用户存在则更新密码,如果用户不存在则创建用户
grant all privileges on db.* to 'test'@'localhost' identified by '123456';
grant授权如果指定了数据库将在db表产生一条数据
grant授权如果指定了数据表将在table_priv产生一条数据
取消权限
revoke all privileges on *.* from 'test'@'%';
on 后面的作用范围必须小于或等于当前用户权限的作用范围
例如:
grant all privileges on dbname.* to 'test'@'localhost'
revoke select on *.* from 'test'@'%';//无效
revoke select on dbname.* from 'test'@'%';//有效
revoke select on dbname.tablename from 'test'@'%';//有效
revoke取消权限即使将全部权限取消也不会删除db表和table_priv表的权限数据
修改密码
update mysql.user set Password=password('123456') where User="test" and Host="localhost";
SET PASSWORD FOR 'test'@'localhost' = PASSWORD('123456');
查看 MySQL 用户权限
- 查看当前用户(自己)权限:
show grants;
- 查看其他 MySQL 用户权限:
show grants for 'test'@'localhost';
特别注意
- 如果需要一个空密码或者无密码的账户,必须先用Create User命令,然后通过grant来分配权限,grant只能创有密码的账户。
- 如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 "with grant option"
- grant, revoke修改完权限以后一定要刷新服务,或者重启服务,刷新服务用:flush privileges;
host说明
127.0.0.1 - 表示本机
localhost - 表示本机*
::1 - 表示ipv6地址的127.0.0.1
% - 表示任何地址