mysql用户权限管理相关表

mysql中存在4个用户及权限相关的表,分别为user、db、tables_priv、columns_priv。
user表存放用户账号以及全局权限信息。
db表存放用户数据库级别的权限,例如哪些主机哪些用户可以访问哪个数据库。
tables_priv表存放表级别的权限,例如哪些主机哪些用户可以访问数据库的哪个表。
columns_priv表存放列级别的权限,例如哪些主机哪些用户可以访问数据库表的哪些字段。

添加用户

//创建用户名为xuxd,密码为xuxd123的用户
create user xuxd identified by 'xuxd123';

授权用户

//将db1库的所有操作权限授权给用户xuxd
//若是要授权所有库的权限 db1.* 改为 *.*
//若是要限制某个ip才能访问 xuxd@'%'改为 xuxd@'ip地址',%代表允许所有的ip远程登录
grant all privileges on db1.* to xuxd@'%' identified by 'xuxd123';

查看所有用户情况

select * from mysql.user

修改密码

update mysql.user set authentication_string = password('xuxd123?') where user = 'xuxd' and host = '%';

删除用户

//删除用户以及对应的权限,执行命令后user表和db表的相应记录都会消失
drop user xuxd@''

更新权限

flush privileges;

事实上,直接用grant授权给某个用户的时候,如果该用户不存在,mysql会自动生成用户信息。


以上命令皆运行于5.7.14版本,其他版本未测试

标签: none

添加新评论