mysql用户权限

2022-07-24 08:06:30

不说了,摊牌了,先上干货,再撸理论!!!

CREATE创建用户

创建用户test并指定密码123456

CREATEUSER'test'@'localhost' IDENTIFIED BY'123456';

grant创建用户并赋予权限

创建用户springboot并制定密码123456

grant select,insert on springboot.* to'springboot'@'localhost' identified by'123456'

查看用户权限

show grantsfor<user>

刷新权限

flush privileges;

grant语法

GRANT<privileges> ON<what>  TO<user>[IDENTIFIED BY"<password>"][WITH GRANT OPTION];

实例如下

GRANT ALL PRIVILEGES ON springboot.* TO'springboot'@'localhost'  IDENTIFIED BY'密码';
GRANT ALL PRIVILEGES ON *.* TO'springboot'@'%'  IDENTIFIED BY'密码';
grant select,insert,delete,create,drop  on *.* to'用户名'@'localhost' identified by ‘密码’;

参数说明
ALL PRIVILEGES:所有权限
ON springboot.*:springboot数据库下面所有的表
ON. :表示所有的库下的所有表
TO ‘springboot’@‘localhost’:表示授予用户springboot权限,@后面表示允许访问数据的客户端
TO ‘springboot’@‘%’ :@后面%表示允许所有客户端,‘localhost’ 表示本机,'%'表示所有主机
IDENTIFIED BY ‘密码’:创建新用户时指定密码

privileges是一个用逗号分隔的你想要赋予的MySQL用户权限的列表。你可以指定的权限可以分为三种类型:

usage登陆权限
连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)
该权限只能用于数据库登陆,不能执行任何操作;且usage权限不能被回收,也即REVOKE用户并不能删除用户

1、数据库/数据表/数据列权限:
Alter: 修改已存在的数据表(例如增加/删除列)和索引。
Create: 建立新的数据库或数据表。
Delete: 删除表的记录。
Drop: 删除数据表或数据库。
INDEX: 建立或删除索引。
Insert: 增加表的记录。
Select: 显示/搜索表的记录。
Update: 修改表中已存在的记录。

2、全局管理MySQL用户权限:
file: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。

3、特殊的权限:
ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录–其它什么也不允许做。

回收权限

语法

REVOKE<privileges> ON<what>  FROM user
REVOKE INSERT ON *.* FROM'springboot'@'localhost';

权限验证原理

mysql数据库中的3个权限表:user 、db、 host
权限表的存取过程是:
1)先从user表中的host、 user、 password这3个字段中判断连接的IP、用户名、密码是否存在表中,存在则通过身份验证;
2)通过权限验证,进行权限分配时,按照user,db,tables_priv,columns_priv的顺序进行分配。即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db, tables_priv,columns_priv;如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。

  • 作者:大佬腿好粗
  • 原文链接:https://blog.csdn.net/m0_51527921/article/details/125662029
    更新时间:2022-07-24 08:06:30