(1)MYSQL权限
运维应该掌握的权限:绿色标示
INSERT,SELECT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE
企业中给开发的权限:INSERT,UPDATE,SELECT,DELETE(不建议)
一般:用update代替delete!
(2)grant授权命令
grant all privileges on *.* to oldboy@’10.0.0.%’ identified by ‘123’;
-- 权限 作用对象(所有库.所有表) 归属 密码
-- grant all privileges和grant all是一个含义
(3)作用对象分解
# *.* [当前MySQL实例中所有库下的所有表]
# test.* [当前MySQL实例中test库中所有表(单库级别)]
# test.user [当前MySQL实例中wordpress库中的user表(单表级别)]
# 字段-->最小的!
脱敏需求:在生产环境中,一些金融公司,用户的信息很重要,需要屏蔽一些敏感信息(密吗),做脱敏处理,不让开发去查询!
即:授权的时候针对某一个字段来进行处理!
(4)脱敏的一个案例
写一个sql脚本
运维人员的操作
create database test;
use test;
create table cust(id int,name varchar(8),carid char(18),phone int(12), age tinyint);
-- desc cust;
insert into cust(id,name,carid,phone,age)values(1,'wzj',123456789123456789,18238816510,28);
insert into cust(id,name,carid,phone,age)values(2,'yxh',123456789123455789,18238816509,27);
-- select * from cust;
-- 说明:授权只能查询这两个字段
grant select(name,age) on test.cust to develop@'localhost' identified by '110';
需求:开发只能查询名字和密码
-- mysql -udevelop -p110 --开发人员专用的用户登陆
-- show databases;
use test;
-- show tables;
-- desc cust;
select name,age from cust; --可以查询
select id from cust; --不能查询
(5)给开发人员权限
开发人员说:请给我开一个普通用户
沟通:
- 1、你需要对哪些库、表进行操作--->操作对象
- 2、具体干什么用-->给什么样的权限
- 2、你从哪里连接过来-->安全
- 3、用户名有没有要求-->开发已经钉死到应用中
- 4、密码要求
- 5、发邮件-->开发老大、运维老大,必须同意,得到授权,以书面的形似
意识:root用户的权限坚决不能给,如果出现问题到底是谁出错了!
(6)grant授权问题的思考
-- 创建wordpress数据库
create database wordpress;
-- 使用wordpress库
use wordpress;
-- 创建t1、t2表
create table t1 (id int);
create table t2 (id int);
----------------------------
-- 创建blog库
create database blog;
-- 使用blog库
use blog;
-- 创建t1表
create table tb1 (id int);
--------三个授权语句----------
--(1)授权给wordpress@’10.0.0.5%用户所有库所有表查询权限,密码是123
grant select on *.* to wordpress@'10.0.0.5%' identified by '123';
--(2)授权给wordpress@’10.0.0.5%用户wordpress所有表(插入、删除、更改)权限,密码是123
grant insert,delete,update on wordpress.* to wordpress@'10.0.0.5%' identified by ‘123’;
--(3)授权给wordpress@’10.0.0.5%用户wordpress库t1表所有权限,密码是123
grant all on wordpress.t1 to wordpress@'10.0.0.5%' identified by '123';
核心:重复授权的最终的权限的问题!
问题:一个客户端程序使用wordpress用户登陆到10.0.0.51的MySQL后
1、对t1表的管理能力? -->所有权限
2、对t2表的管理能力? -->插入、删除、更改、查询
3、对tb1表的管理能力? -->查询
解:
1、同时满足1,2,3,最终权限是1+2+3
2、同时满足了1和2两个授权,最终权限是1+2
3、只满足1授权,所以只能select
结论:
1、如果在不同级别都包含某个表的管理能力时,权限是"相加"关系
2、但是我们不推荐在多级别定义重复权限。
3、最常用的权限设定方式是单库级别授权,即:wordpress.*
问题:权限管理很乱!
(7)权限回收
revoke select on *.* from jzw@'%';
5.6和5.7的区别