mysql用户及权限管理

创建用户

Create user命令创建
-- 命令格式
CREATE USER 'username'@'host' IDENTIFIED BY 'password';

其中,'username’是要创建的用户名,'host’是允许连接的主机名或IP地址,'password’是要设置的密码。

--创建一个test_user
create user 'test_user'@'%' IDENTIFIED by "test_user";

create user命令创建的用户是没有任何权限的,还需要给用户授权才能正常使用。

grant命令创建
-- 命令格式
GRANT privileges ON database.table TO 'username'@'host' IDENTIFIED BY 'password';

其中,privileges是要授予的权限,database.table是要授权的数据库和表,'username’是要创建的用户名,'host’是要连接的主机名或IP地址,'password’是要设置的密码。

-- 使用grant创建一个test_user_01用户,并授予 mysql库的查询权限
grant SELECT on mysql.* to 'test_user_01'@'%' IDENTIFIED by "test_user_01"
Insert语句执行创建用户
-- 命令格式
INSERT INTO mysql.user (Host, User, Password) VALUES ('host', 'username', PASSWORD('password'));

其中,'host’是要连接的主机名或IP地址,'username’是要创建的用户名,'password’是要设置的密码。

-- 使用insert语句创建一个test_user_02的用户,没有任何权限
INSERT INTO mysql.user (Host, User, authentication_string,ssl_cipher,x509_issuer,x509_subject) VALUES ('%', 'test_user_02', PASSWORD('test_user_02'),'','','');
-- 通过insert语句创建用户后需要执行flush PRIVILEGES,目的时刷新内存,新用户才生效
flush PRIVILEGES;

需要注意的是,以上三种方式均需要具有CREATE USER或GRANT权限的用户才能执行。、

删除用户

drop user命令

-- 命令格式
DROP USER 'username'@'localhost';

这条命令会删除特定主机上的特定用户。

-- 删除test_user用户
DROP USER 'test_user_01'@'%';

直接删除user表记录

REVOKE命令

-- 命令格式
REVOKE ALL PRIVILEGES FROM 'username'@'localhost';

这条命令会撤销特定主机上特定用户的所有权限。

-- 删除test_user_03用户的所有权限(前提test_user_03要有权限才会执行成功)
REVOKE ALL PRIVILEGES on mysql.* FROM 'test_user_03'@'%';

REVEOKE命令只会回收权限,不会删除用户

delete语句

  -- 语句格式
  DELETE FROM mysql.user WHERE User='username' AND Host='localhost';

这条命令会从 mysql.user 表中删除特定主机上的特定用户。

-- 示例:删除test_user_03在主机'%'的权限
DELETE FROM mysql.user WHERE User='test_user_03' AND Host='%';
-- 注意:delete执行后不会立即生效,需要执行下面的语句后才会生效
flush PRIVILEGES

以上3个命令建议以用户+主机作为操作条件,因为这2个字段在user表中时双主键,如果只是用一个,可能会误操作其它记录导致异常。

权限管理

# 命令格式
GRANT 权限 ON 数据库对象 TO 用户 [IDENTIFIED BY 密码]
可授权的权限
  • select: 查询数据权限
  • insert: 插入数据权限
  • update:更新/修改数据权限
  • delete:删除数据的权限
  • create:创建数据表权限
  • alter:修改表结构权限
  • drop:删除数据表权限
  • references:外键权限
  • create temporary:临时表权限
  • index:索引权限
  • create view:创建视图权限
  • show view:查看视图权限
  • create routine:创建存储过程的权限
  • alert routine:修改存储过程的权限
  • execute:执行存储过程的权限
  • all [privileges]:所有权限
数据库对象
  • . :表示给用户授权针对于所有数据库的所有表生效
  • dbname.* :表示给用户授权只针对dbname数据库的所有表生效
  • dbname.tablename :表示给用户授权只针对dbname数据库中的tablename数据表生效
用户
  • username@“%” :表示允许username通过所有主机访问
  • username@“localhost” :表示只允许username通过所有本机访问
  • username@“192.168.0.%” : 表示只允许username通过所有IP段为192.168.0.*的主机访问
密码

表示允许用户通过某个密码访问

存储

用户的权限信息存储在mysql库的user表和db表。user表存储了MySQL中所有用户的权限信息,而db表则存储了用户对每个数据库的权限信息

示例
  1. 创建一个用户拥有所有数据库及数据表的数据增删改查权限的用户user_test,密码为user_test,允许通过所有主机链接
-- 创建同时授权
grant select,update,insert,delete on *.* to "test_user_04"@"%" IDENTIFIED by "test_user_04";
-- 查看权限
show grants for test_user_04;

在这里插入图片描述
2. 给test_user_04新增修改,删除,创建表权限。

-- 新增权限
grant create,drop,ALTER on *.* to "test_user_04"@"%";
-- 查看权限
show grants for test_user_04;

在这里插入图片描述
3. 给test_user_04 新增可授权权限(可给其他用户授权或创建用户)

-- 在授权语句后面加上"WITH GRANT OPTION"
grant select,update,insert,delete on *.* to "test_user_04"@"%" WITH GRANT OPTION;

使用update语句更新用户权限

可通过update语句更新user和db表,更新相关用户权限。执行后需要执行FLUSH PRIVILEGE 语句使修改生效。

撤销权限

撤销权限通删除用户,请查看[删除用户]章节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑牛儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值