安全管理
1.访问控制
1)提供且仅提供用户所需的访问权限;
2)需要【创建】和【管理用户账号】,关于账号
a.尽量避免使用root账号;
b.应该创建多种账号,供【管理人员】、【开发人员】、【用户】使用;
3)目的不仅仅是防止用户恶意企图,也防止用户无意识的错误;
2.管理用户
2.1 查看用户
所有用户的信息都存储在名为“mysql”的数据库中;
-- 1.切换数据库
use mysql;
-- 2.查看当前所有用户 这里前一个user是列名 后一个user是表名
select user from user;
2.2 创建用户
-- 1.创建一个用户的基本语法
CREATE USER 用户名 IDENTIFIED by '密码';
-- 2.对用户重命名
rename user 旧用户名 to 新用户名;
-- mysql5之前的版本需要使用update子句
update user set user=新用户名 where user=旧用户名;
【说明】
1)IDENTIFIED BY PASSWORD在存入表前对 密码/口令 进行加密;
2)也可以使用INSERT插入用户,但是不建议:“mysql”数据库很重要,insert可能会破坏它;
3)因此相对于直接用insert语句处理,用标记和函数处理这些表会更好;
2.3 删除用户
-- 删除用户基本语法
drop user 用户名;
【说明】
mysql5之前的版本只删除用户账号,不删除相关权限,因此需要使用revoke删除与账号相关的权限,然后drop user 删除账号;
2.4 设置用户权限
-- 1.查看某个用户有的权限
-- usage on *.*表示在任何数据库的任何表上都【没有任何权限】
-- 用户 = 用户名@主机名,默认主机名为: "%"
show grants for 用户名; -- grant usage on *.* to 用户名@主机名
授予用户权限
使用grant语句
1)给出要授予的权限;
2)给出在哪个数据库哪张表上的权限;
3)给出用户名;
-- 授予权限的基本语法
grant
select|insert|delete|update -- 要授予的权限,授予多个权限可用逗号隔开
on 数据库名.表名 -- 给出权限的数据范围
to 用户名; -- 给出授予哪个用户
2.5 撤销用户权限
-- 撤销权限的基本语法
revoke
select|insert|delete|update -- 给出要授予的权限
on 数据库名.表名 -- 给出权限的数据范围
from 用户名; -- 给出授予哪个用户
【说明】
1)格式上与授予权限类似,grant换成revoke,from换成to;
2)撤销权限要求撤销的权限必须存在,否则会出错;
2.6 更改用户口令
-- 基本语法
set password for 用户名 = password('新密码');
-- 不加 [for 用户名] 默认更改当前登录的用户的密码 也就是自己的密码
set password = password('新密码');
3.grant 和 revoke 控制层次
grant 和 revoke 可以在以下多个层次上控制访问权限:
1)整个服务器,使用grant all或revoke all;
2)整个数据库,使用ON 数据库名.*;
3)特定的表,使用 ON 数据库名.表名;
4)特定的列,猜测是使用 ON 数据库名.表名.列名;//待验证
5)特定的存储过程,ON PROCEDURE 存储过程名; 。//待验证
权限表一览
权限 | 说明 |
---|---|
show databases | 使用show databases |
create | 使用create table |
drop | 使用drop table |
alter | 使用alter table |
create temporary tables | 使用create temporary table |
lock tables | 使用lock tables |
index | 使用create index和drop index |
insert | 使用insert |
delete | 使用delete |
update | 使用update |
select | 使用select |
FILE | 使用select into outfile 和 load data infile |
create view | 使用create view |
show view | 使用show create view |
create routine | 使用create PROCEDURE |
alter routine | 使用alter PROCEDURE和 drop PROCEDURE |
execute | 使用call和存储过程 |
create user | 使用 create/drop/rename user 和 revoke all privileges |
usage | 无访问权限 |
ALL | 除grant option外的所有权限 |
grant option | 使用grant 和 revoke |
process | 使用show full processlist |
reload | 使用flush |
replication client | 服务器位置的访问 |
replication slave | 由复制从属使用 |
shutdown | 使用mysqladmin shutdown关闭mysql |
super | 使用change master、kill、logs、purge、master、和set global,允许mysqladmin调试登录 |