备注:测试数据库版本为MySQL 8.0

这个blog我们来聊聊MySQL用户及权限

MySQL用户和权限介绍

MySQL权限系统通过下面两个阶段进行认证:
1.对连接的用户进行身份认证,合法的用户通过验证,不合法的用户拒绝连接
查看mysql.user表的Host、User、
备注:MySQL 进行身份认证的时候,IP地址和用户名联合进行确认,所以root@localhost 和root@ip 会被MySQL视为不同的用户。
2.对通过认证的合法用户赋予相应的权限,用户可以在这些权限范围内对数据库做相应的操作。
权限相关表:
user(全局级别权限)
db(数据库级别权限)
tables_priv(表级别权限)
columns_priv(列级别的权限)
procs_priv (存储过程和函数的权限)

按照user,db,tables_priv,columns_priv的顺序进行验证。
即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db, tables_priv,columns_priv;
如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。

MySQL权限

MySQL都有哪些权限

权限名

对应授权表的列

用途

All/All Privileges

all privileges

权限代表全局或者全数据库对象级别的所有权限

Alter

Alter_priv

允许许修改表结构的权限,但必须要求有create和insert权限配合。如果是rename表名,则要求有alter和drop原表, create和insert新表的权限

Alter routine

Alter_routine_priv

允许修改或者删除存储过程、函数的权限

Create

Create_priv

允许创建新的数据库和表的权限

Create ROLE

Create_role_priv

允许创建角色

Create routine

Create_routine_priv

允许创建存储过程、函数的权限

Create tablespace

Create_tablespace_priv

允许创建、修改、删除表空间和日志组的权限

Create temporary tables

Create_tmp_table_priv

允许创建临时表的权限

Create user

Create_user_priv

允许创建、修改、删除、重命名user的权限

Create view

Create_view_priv

允许创建视图的权限

Delete

Delete_priv

允许删除行数据的权限

Drop

Drop_priv

允许删除数据库、表、视图的权限,包括truncate table命令

Drop role

Drop_role_priv

允许删除角色

Event

Event_priv

允许查询,创建,修改,删除MySQL事件

Execute

Execute_priv

代表允许执行存储过程和函数的权限

File

File_priv

允许在MySQL可以访问的目录进行读写磁盘文件操作,可使用的命令包括load data infile,select … into outfile,load file()函数

Grant option

Grant_priv

允许此用户授权或者收回给其他用户你给予的权限,重新付给管理员的时候需要加上这个权限

Index

Index_priv

允许创建和删除索引

Insert

Insert_priv

是否允许在表里插入数据,同时在执行analyze table,optimize table,repair table语句的时候也需要insert权限

Lock TABLES

Lock_tables_priv

允许对拥有select权限的表进行锁定,以防止其他链接对此表的读或写

Process

Process_priv

允许查看MySQL中的进程信息,比如执行show processlist, mysqladmin processlist, show engine等命令

PROXY

See proxies_priv table

想让某个用户具有给他人赋予权限的能力,那么就需要proxy权限了,远程用户也可以

Reference

References_priv

允许创建外键

Reload

Reload_priv

允许执行flush命令

Replication client

Repl_client_priv

允许执行show master status,show slave status,show binary logs命令

Replication slave

Repl_slave_priv

允许slave主机通过此用户连接master以便建立主从复制关系

Select

Select_priv

允许从表中查看数据,update、delete语句有where条件的也需要select权限

Show databases

Show_db_priv

通过执行show databases命令查看所有的数据库名

Show view

Show_view_priv

过执行show create view命令查看视图创建的语句

Shutdown

Shutdown_priv

允许关闭数据库实例,执行语句包括mysqladmin shutdown

Super

Super_priv

允许执行一系列数据库管理命令

Trigger

Trigger_priv

允许创建,删除,执行,显示触发器的权限

Update

Update_priv

允许修改表中的数据的权限

Usage

“no privileges”的同义词

创建一个用户之后的默认权限,其本身代表连接登录权限

MySQl权限表数据字典

user表&&db表 

表名

user

db

范围列

Host

Host

User

User

DB

权限相关列

Select_priv

Select_priv

Insert_priv

Insert_priv