MySQL - 用户安全管理
一、MySQL用户的分类
普通用户:只拥有被授予的各种权限
root用户:超级管理员用户,拥有所有权限,及用户管理权限
二、用户安全管理
用户安全管理包括:权限表、账户管理、权限管理
权限表
权限表:存放在MySQL库中,MySQL服务器就是通过权限表来控制用户对数据库的访问
最重要的权限表:user表、db表,还有tables_priv表、column_priv表、procs_priv表
-
user表:存贮了服务器上各个用户的访问控制权限(服务器级别)
45个字段,分四类: 用户列: host+user 构成user表的联合主键 权限列: 列名以_priv结尾的都是权限列 安全列 资源控制列
select host,user from mysql.user; – 查看用户列
select ssl_type,ssl_cipher,x509_issuer,x509_subject from mysql.user; – 查看安全列
-
db表:存贮了用户对某个数据库的操作权限(数据库级别) host+db+user 构成联合主键
select * from mysql.db; -- 看数据 describe mysql.db; -- 看结构
-
可以通过修改db表来实现修改某个用户对于某个数据库的访问控制权限
show VARIABLES like 'data%'; -- 数据路径
权限列都是带有_priv结束的
-
tables_priv表: 存贮了用户对某个数据库的某个表的操作权限(表级别)
用户管理中只能授予服务器级别与数据库级别的访问控制权限,要授予表级别的访问控制权限,则可以通过修改tables_priv表来实现 -
column_priv表: 存贮了用户对某个数据库的某个表的某个列操作权限(列级别)
在修改列级权限前需要先修改tables_priv表中的column_priv列,然后再在column_priv表中添加指定列的对应权限,则只有该列具有此权限。 -
procs_priv表:存贮了用户对某个数据库的存贮过程与函数的调用与修改权限
账户管理
账户管理:MySQL提供了多种方式来管理用户账户,包括登录和退出MySQL服务器,创建用户、删除用户、密码管理、权限管理
1、登录和退出MySQL服务器
使用MySQL命令:mysql.exe是mysql数据库管理系统提供的一个客户端管理工具,可以通过 show variables like ‘base%’ 查看
登录MySQL服务器的完整命令格式:
mysql -h 主机名|ip -P 端口号 -u用户名 -p密码 数据库名 -e "sql语句"
例如:
C:\Program Files>mysql -h127.0.0.1 -P3306 -uroot -p empdbx -e “select * from departments”
如果使用了-e参数,则不会登录MySQL服务器
2、创建用户 – MySQL的用户即为登录
- (1)使用sql命令: create user
create user ‘用户名1’@‘主机名’ [IDENTIFIED by ‘密码’] ,‘用户名1’@‘主机名’ [IDENTIFIED by ‘密码’];
create user aa; -- 默认创建'aa'@%用户
create user 'aa'@localhost;
create user 'bb'@localhost IDENTIFIED by '123456';
- (2)向mysql数据库中的user表插入一个新纪录(新用户),主要的关键字段:host、user