暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql数据库用户权限管理及数据安全分析

原创 四宝 2022-06-14
1274


mysql数据库用户权限管理及数据安全分析

 

一、mysql数据库用户权限级别

         全局性管理权限:作用于整个mysql实例级别

数据库级别:作用于指定的某个数据库上或者所有数据库上

        数据库对象级别权限:作用于指定的数据库对象上(表或者视图)

 

二、mysql数据库用户权限说明与安全风险分析

权限

权限说明

安全风险分析

All/All Privileges

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

风险性大,该权限命令,具有删除数据库的权限,误操有删除数据库的风险。属于非常粗力度的授权,不满足权限管理的最小化原则,一般不建议用户用该命令授权。

Alter

修改表结构的权限,但必须要求有create和insert权限配合

 

Create

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

 

Create routine

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

 

Create tablespace

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

 

Create temporary tables

创建临时表权限

 

Create user

创建、修改、删除、重命名user

 

Create view

创建视图

 

Delete

删除行数据

操作对象为数据库表的行删除,常规业务删除操作

drop

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

该权限风险性大,对数据库具有数据库级别的删除权限。

Event

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

 

Execute

执行存储过程和函数

 

File

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

 

Grant option

授权或者收回给其他用户你给予的权限

 

Index

创建和删除索引

风险较大,对于量级较大的表而言,误删除会导致查询执行缓慢,甚至导致整个业务宕机。

Insert

在表里插入数据

 

Lock

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

 

Process

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

 

Reference

允许创建外键

 

Reload

执行flush命令,指明重新加载权限表到系统内存中

 

Replication client

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

 

Replication slave

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

 

Select

从表中查看数据

 

Show databases

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

 

Show view

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

 

Shutdown

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

风险较大,属于全局性权限。

Super

允许执行一系列数据库管理命令,包括kill强制关闭某个连接命令,change master to创建复制关系命令,以及create/alter/drop server等命令

 

Trigger

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

 

Update

修改表中数据的权限

 

Usage

创建一个用户之后的默认权限,本身代表无权限

 

 

 

 

 

 

三、MySQL用户授权层级分类

授权就是为某个用户授予权限,合理的授权可以保证数据库的安全,MySQL中可以使用GRANT语句为用户授予权限。授权可以分为多个层次:

全局层级:全局权限适用于一个给定服务器中的所有数据库,这些权限存储在mysql.user表中。

数据库层级:数据库权限适用于一个给定数据库中的所有目标,这些权限存储在mysql.db表中。

表层级:表权限适用于一个给定表中的所有列,这些权限存储在mysql.tables_priv表中。

列层级:列权限使用于一个给定表中的单一列,这些权限存储在mysql.columns_priv表中。

子程序层级:CREATE ROUTINE、ALTER ROUTINE、EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,这些权限可以被授予子程序层级,并存储在mysql.procs_priv表中。

四、MySQL数据库用户类型

   系统管理用户:一般为root用户,具有最大级别的权限。或者具有grant all privileges on *.* to 'ua'@'%' with grant option;授权的用户。

      数据库开发人员用户:创建表、索引、视图、存储过程、函数等权限授权

      普通业务用户:具有insert、delete、update、select等符合业务需要的权限。

五、用户应用范围

   可以通过select user,host from mysql.user;命令查询该库所有用户的可以连接的范围,如下图所示

 

 关注具有全局权限的用户的使用范围,是否是安全可控的。

六、MySQL的授权解析

1)创建一个新用户test1仅2.37.6.0段可以使用

 

MySQL语句为:create user ‘test1’@’2.37.6.%’ identified by ‘123’;

2.37.7.6.%:代表2.37.6.0网段的所有主机终端均可使用该用户连接数据库

注意:在安全管理中确定一些用户的使用范围是否在必要的安全范围内。

2)给该用户授权,给test1用户授权school数据下的表t1具有增删改查权限

 

Mysql语句为:grant insert,delete,update,select on school.t1 to ‘test’@’2.37.6.%’;

insert,delete,update,select:具体的权限

School:要授权的库名。*代表所有库

t1:要授权的该库下的具体表名、视图等数据库对象名称。*代表该库下所有对象。

注意:当授权对象写的是*.*代表MySQL实例下的所有数据库所有对象。具有全局权限,风险较大,在安全管理中需要去杜绝该类授权。确保授权对象清晰可控。

3)授权语句中给予with grant option权限,该权限可以传递自己的权限授权给他人,除了数据库管理员,其他业务用户,业务数据库开发用户都要避免给予该权限,确保数据库授权统一管理。

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论