Mysql(5.7)用户权限管理

1.用户管理

Mysql用户可分为 普通用户root用户。root用户是超级管理员,拥有所有权限,包括创建用户,删除用户和修改用户的密码等管理权限,普通用户只拥有被授予的各种权限。

Mysql提供了许多语句来管理用户账号,这些语句可以用来管理包括登录和退出Mysql服务器,创建用户,删除用户,密码管理和权限管理等内容。

1.1Mysql权限分布

权限分布 可能设置的权限
表权限 SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,GRANT,REFERENCES,INDEX,ALTER
列权限 SELECT,INSERT,UPDATE,REFERENCES
过程权限 EXECUTE,ALTER,ROUTINE,GRANT

1.2授予权限的原则

1. 只能授予 满足需要的最小权限 , 防止用户做其他的操作。

2. 创建用户时 限制用户的登录主机 ,一般是限制成指定ip或内网ip段

3. 为每个用户 设置满足密码复杂度的密码

4. 定期清理不需要的用户, 回收权限或者删除用户

1.3 mysql数据库表介绍

Mysql(5.7)用户权限管理_第1张图片

5.7版本下有31张表

user表存储当前用户,以什么ip范围进行登录

Mysql(5.7)用户权限管理_第2张图片

desc user; 用户的各种权限,密码,认证,允许查询次数,允许连接次数等

Mysql(5.7)用户权限管理_第3张图片

desc db;  体现的是每一个具体的数据库操作权限问题

 Mysql(5.7)用户权限管理_第4张图片

desc tables_priv;   具体的每一个表的权限

desc columns_priv;   具体的每一个列的权限

Mysql(5.7)用户权限管理_第5张图片

1.4 权限认证流程

用户像MySQL发出操作请求

1. Mysql检查user表中是否有对应的权限,如果有操作被允许,没有则继续向下执行

2. Mysql检查db表中是否有对应的权限,如果有操作被允许,没有则继续向下执行

3. Mysql检查tables_priv表中是否有对应的权限,如果有操作被允许,没有则继续向下执行

4. Mysql检查columns_priv表中是否有对应的权限,如果有操作被允许,没有则返回错误信息

1.5 配置文件的使用

my.cnf 配置文件内容解析

[mysql]

....

[mysql_safe]

....

[client]

....

[mysql]

....

[mysqladmin]

....

启动命令 类别 能读取的组
mysqld 启动服务器 [mysql], [server]
mysql_safe 启动服务器 [mysql], [server], [mysql_safe]
mysql.server 启动服务器 [mysql], [client], [mysql.server]
mysql 启动客户端 [mysql], [client]
mysqladmin 启动客户端 [mysqladmin], [client]
mysqldump 启动客户端 [mysqldump], [client]

2. 配置远程访问用户和设置简单密码

第一次安装 mysql 后, mysql返回的root用户密码 grep "password" /var/log/mysqld.log 

配置my.cnf文件

validate_password = off  # 不叫校验密码

character_set_server = utf8 # 密码格式简单

登录  mysql -uroot -p 上面的密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; # 修改root用户密码
create user 'root'@'%' identified by '123456'; # 此处外网访问用户密码强度设计高点
grant all on *.* to 'root'@'%'; # 给创建的root用户配置所有权限
FLUSH PRIVILEGES; # 刷新权限

你可能感兴趣的:(mysql底层原理,mysql)