MySQL - 用户及权限

创建用户

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

特别注意

  1. 如果需要一个空密码或者无密码的账户,必须先用Create User命令,然后通过grant来分配权限,grant只能创有密码的账户。
  2. 如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 "with grant option"
  3. grant, revoke修改完权限以后一定要刷新服务,或者重启服务,刷新服务用:flush privileges;

host说明

127.0.0.1 - 表示本机
localhost - 表示本机*
::1 - 表示ipv6地址的127.0.0.1
% - 表示任何地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容