数据库安全性
1 视图
特点:
- 视图是一个虚拟表。不存数据,建立在已有表或视图中,只占少量空间。
- 视图的建立和删除不影响基本表。
- 视图的修改会影响基本表,反之亦然。视图有多表生成不允许添加和删除数据。
- 视图本质为查询语句。
- 视图可以保证安全性。
1.1DDL语句
1.1.1 创建
基础语句
CREATE VIEW 视图名 AS 查询语句#查询语句中不能有未分组使用聚合函数的情况
/*
如:create view a as select count(*) from b;是错误的
*/
别名
CREATE VIEW 视图名(别名1,别名2,...) AS 查询语句#slect查询语句中也可以改
如:CREATE VIEW myView(i1,i2) AS (SELECT employee_id, avg(salary) FROM employees LIMIT 10 OFFSET 0);
1.1.2 修改
ALTER VIEW 视图名 AS 查询语句;
CREATE OR REPLACE VIEW 视图名 AS 查询语句;
1.1.3 删除
DROP VIEW 视图名;
1.2 查看语句
语句 | 说明 |
---|---|
SHOW TABLES; | 查看视图对象 |
DESC myview; | 查看视图结构 |
SHOW CREATE VIEW myview; | 查看视图的创建信息 |
SELECT * FROM myview; | 查看视图中的数据 |
1.3 DML语句
规则同表中的操作,这里略。
特点
2 权限管理
2.1 用户管理
说明:mysql中用户分为普通用户和超级用户。
创建
CREATE USER ‘用户名’[@ip地址] [IDENTIFIED BY ‘密码’] ;#ip地址可以为%和localhost
修改
update mysql.user set user=‘’ where user=‘’;#改表。user表中含user 和 host
flush privilege;#刷新权限表
删除
-
删表元素语句
-
drop user 用户名@ip;#用户名和ip均正确才能删除
修改密码
- 修改自己的密码
SET PASSWORD = '123456'
和ALTER USER USER() IDENTIFIED BY '123456'
- 修改其他用户密码
ALTER USER '用户名'@'ip' identified by '123456'
和set password for '用户名'@'ip' = '123456'
2.2 权限管理
权限类型:表类型,列类型,数据库类型,函数类型等。
授予权限1
GRANT 权限1,权限2,... ON 限制类型对象 TO '用户名'@'ip';
收回权限2
REVOKE 权限1,权限2,... ON 限制类型对象 FROM '用户名'@'ip';#限制对象可以为 数据库名.表名 也可为*.*
2.3 角色管理
角色:角色权限的集合。
角色使用思路:先定义拥有权限的角色,再将用户赋予为某种角色,并激活。
创建角色
CREATE ROLE '角色名1'[@'ip1'],角色名2'[@'host'],..# host默认为%,适配所有ip
赋予角色权限
GRANT 权限 ON 对象 TO 角色;
查看角色权限3
SHOW GRANTS FOR 角色
回收用户权限
REVOKE 权限 ON 对象 FROM 角色;
删除角色
DROP ROLE 角色;
赋予用户角色
GRANT 角色 TO 用户;
激活角色4
SET GLOBAL activate_all_roles_on_login=ON;#会话级别临时激活,法1
SET DEFAULT ROLE role@ip TO 用户@ip;#法2,会话级别临时激活
SET persist activate_all_roles_on_login=ON;#永久激活,法3
撤销用户角色
REVOKE 角色 FROM 用户;