mysql+exercise+3,《mysql性能调优与架构设计》笔记:三mysql 安全管理

4.1数据库系统安全相关因素

1,外围网络

2,主机:

3,数据库本身

访问授权相关模块主要是由两部分组成:

一个是基本的用户管理模块:主要负责用户登录链接相关的基本权限控制

另外一个是访问授权控制模块:随时随地检查已经进门的访问者,校验他们是否有访问所发出请求需要访问的数据的权限。通过校验者可顺利拿到数据,而未通过校验的访问者,只能收到“访问越权了”的相关反馈。

三道防线图:

6db5d4a6696c8594d43c5ba35251a57f.png

4,代码:sql注入--危害很大,防不胜防

4.2权限系统简介

4.2.1,相关权限信息主要存储在几个被称为grant tables的系统表中。mysql.user,mysql.db,mysql.Host,mysql.table_priv,mysql.column_priv由于权限表数据量比较小,而且访问非常频繁,所以mysql在启动的时候就会将所有的权限信息Load到内存中,所以当我们手动修改权限后要执行FLUSH PRIVILEGES命令来重新加载mysql的权限信息。如果用GRANT,REVOKE,DROP USER不需要执行FLUSH PRIVILEGES,这个几个命令在修改表的时候,内存也进行了修改。CREATE USER来添加用户,注意新添加的用户仅有初始user权限,通过CREATE USER 命令也会更新内存。推荐使用GRANT,REVOKE,DROP USER,CREATE USER进行权限控制。

5.6以上不包含5.6               5.6以上包含5.6

a6e7e6ad2a472686d4f92cbdf1b5c622.png 

ed7fd0761006d60b98762901d6d3abb8.png

4.2.2,权限授予与去除:

GRANT  授权

REVOKE 撤回权限

更新 GRANT TABLES系列表的。

给用户授权的时候,不仅需要指定用户名,还需要指定来访主机。如果仅仅指定用户名,则mysql则会认为是:'username'@'%'授权,要去除用户权限,同样也要指定来访主机。

查看某个用户权限:"SHOW GRANTS FOR 'username'@'hostname';    查询 grant tables 系列表里的权限信息

4.2.3,权限级别:MySQL 中的权限分为五个级别

1,Global Level:全局控制权限,所有权限信息都保存在mysql.user表中。

作用域:所有权限是针对整个mysqld的,对于数据库下的所有表及所有字段都有效。

2,Global Level主要有如下权限:

1de454bdc9960aa36842bb7ad7094313.png

0931d94a13ca3ad1cd81d71e66904de7.png

c1cc4e0041cb9f05167b12a71fa09f15.png

3,要授予Global Level的权限,则只需要在执行GRANT命令的时候,用*.*来指定适用范围是Global即可,当有多个权限需要授予的时候,也并不需要多次授权,只需要将所有需要的权限通过逗号(,)隔开即可:例如:

GRANT SELECT,UPDATE,DELETE,INSERT ON *.* TO 'username'@'localhost';

4,Database Level

在Global Level之下,其他三个level之上

作用域:指定数据库下的所有对象

权限设置:与Global Level比,少了一下几个权限:CREATE USER,FILE,PROCESS,RELOAD,REPLICATION CLIENT,REPLICATION SLAVE,SHOW DATABASES,SHUTDOWN,SUPER,USEAGE,没有增加任何权限

实现方式:两种:

1,GRANT ALTER ON test.* to 'username'@'localhost';

2,USE DATABASENAME

GRANT DROP ON * TO 'username'@'locahost';

3,在授权的时候,如果授予多个用户相同的权限,则可以授权多个用户

GRANT CREATE ON test.* TO 'username1'@'localhost,'username2'@'localhost'

5,Table Level

作用域:低于Global Level,Database Level,高于Column Level,Routine Level

实现:GRANT INDEX ON test.t1 TO 'USERNAME'@'LOCALHSOT';

权限设置:ALTER,CREATE,DELETE,DROP,INDEX,INSERT,SELECT,UPDATE

6,Column Level:

作用域:低于Global,Database,Table level ,高于Routine Level

实现:GRANT select(id,value) on test.t2 to 'ab'@'localhsot';

注意:当某个用户在向某个表插入(INSERT)数据的时候,如果该用户在某个列上没有INSERT权限,则该列的数据将插入默认值填充

7,Routeine Level:

作用域:低于其他4中级别

权限设置:EXECUTE,ALTER ROUTINE两种

实现:GRANT EXECUTE ON test.p1 to 'username'@'localhost';

8,grant 权限:

拥有grant权限的用户,可以将自身所拥有的权限授权给其他用户,通常加上:WITH GRANT OPTION字句达到授权的目的。

9,我们可以通过GRANT ALL 语句授予某个Level的所有可用权限给某个用户:

grant all on test.t4 to 'abc';

注意:上面的五个权限中:Table,Column,Routine三者在授权的时候有所依赖的对象必须是存在的,而不像DATABASE level,可以在当前数据库不存在的时候完成授权

4.2.4访问控制实现原理:

1,组成:

用户管理模块:是否存在某个用户

主要就是:user表中的host,username,password这三项

访问控制模块:监控来访者每个动作

所有授权用户都存放在mysql.user表中

说明:用户管理模块决定造访者能否进门,访问控制模块则决定每个客人能那什么不能拿什么

2,客户管理模块流程:

6054444adb52719194d0ad9c1210cad6.png

3,权限控制模块流程:详细解释:page45

select * from test.t4 where status='ss';

eff9bea40132e1988ce9302809c4ca03.png

4.3mysql 访问授权策略:

1,了解来访主机:'username'@'%'授予所有主机权限

2,了解用户:只读,只写,备份,管理,访问特定数据库,表

3,位工作分类

4,确保绝对必要这拥有grant option权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值