一、MySQL用户管理
MySQL数据库的安全性需要通过账户管理来保证。
1、登录MySQL服务器
最全的登录命令
2、查询MySQL 所有用户
MySQL用户可以分为普通用户和root用户。root用户是超级管理员,拥有所有权限,包括创建用户、删除用户和修改用户的密码等管理权限;普通用户只拥有被授予的各种权限。
mysql数据库下的user表
-- 查询 MySQL 中的所有用户及其允许连接的主机 SELECT HOST,USER FROM mysql.user;
Host 列:用户允许连接的主机名(% 表示允许任意主机)
3、创建、删除、修改用户
创建用户
创建zhang3用户,默认host是%
CREATE USER 'zhang3' IDENTIFIED BY 'abc123';
如果不想host是%,可以指定
得出结论:mysql.user表的主键是host字段和user字段的联合主键
修改用户名
修改后要记得 flush privileges
删除用户
4、设置当前用户密码
适用于root用户修改自己的密码,以及普通用户登录后修改自己的密码。
方式一:使用ALTER USER命令来修改当前用户密码
把当前用户的密码修改为abcabc
方式二:SET命令修改
该set语句会自动将密码加密后再赋值给当前用户
5、root修改其他用户的密码
root用户不仅可以修改自己的密码,还可以修改其它普通用户的密码。root用户登录MySQL服务器后,可以通过ALTER语句和SET语句来修改普通用户的密码。
方式一:使用ALTER语句修改普通用户的密码
方式二:使用SET命令修改普通用户的密码
二、MySQL权限管理
1、MySQL权限分布
查看MySQL有哪些权限
-- 查看权限列表
SHOW PRIVILEGES;
MySQL权限分布
2、授予权限的原则
权限控制主要是出于安全因素,因此需要遵循以下几个经验原则:
1、只授予能满足需要的最小权限,防止用户干坏事。比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。
2、创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。
3、为每个用户设置满足密码复杂度的密码。
4、定期清理不需要的用户,回收权限或者删除用户。
3、授权命令
查看当前用户权限
SHOW GRANTS;
给用户授权
对'zhang3'@'%'用户授权
可以使用GRANT重复给用户添加权限,权限叠加,比如你先给用户添加一个SELECT权限,然后又给用户添加一个INSERT权限,那么该用户就同时拥有了SELECT和INSERT权限。
4、授权所有 all privileges
特殊授权操作
此时,li4用户在权限层面来说和root的区别:不能给别人赋予权限
如果需要赋予包括GRANT的权限,添加参数“WITH GRANT OPTION”这个选项即可,表示该用户可以将自己拥有的权限授权给别人。经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。
5、收回权限命令
MySQL中使用REVOKE语句取消用户的某些权限。
建议大家,尽量使用数据库自己的角色和用户机制来控制访问权限,不要轻易用Root账号。因为Root账号密码放在代码里面不安全,一旦泄露,数据库就会完全失去保护。而且,MySQL的权限控制功能十分完善,应该尽量利用,可以提高效率,而且安全可靠。
三、MySQL日志管理
1、MySQL日志
MySQL有不同类型的日志文件,用来存储不同类型的日志,分为二进制日志、错误日志、通用查询日志和慢查询日志,这也是常用的4种。MySQL8又新增两种支持的日志:中继日志和数据定义语句日志。使用这些日志文件,可以查看MySQL内部发生的事情。
除二进制日志外,其他日志都是文本文件。默认情况下,所有日志创建于MySQL数据目录中。
2、日志的弊端
日志功能会降低MySQL数据库的性能。例如,在查询非常频繁的MySQL数据库系统中,如果开启了通用查询日志和慢查询日志,MySQL数据库会花费很多时间记录日志。
日志会占用大量的磁盘空间。对于用户量非常大、操作非常频繁的数据库,日志文件需要的存储空间甚至比数据库文件需要的存储空间还要大。
3、通用查询日志
通用查询日志:记录所有连接的起始时间和终止时间,以及连接发送给数据库服务器的所有指令,对我们复原操作的实际场景、发现问题,甚至是对数据库操作的审计都有很大的帮助。
4、错误日志
错误日志:记录MySQL服务的启动、运行或停止MySQL服务时出现的问题,方便我们了解服务器的状态,从而对服务器进行维护。
5、二进制日志
二进制日志:记录所有更改数据的语句,可以用于主从服务器之间的数据同步,以及服务器遇到故障时数据的无损失恢复。
6、中继日志
中继日志:用于主从服务器架构中,从服务器用来存放主服务器二进制日志内容的一个中间文件。从服务器通过读取中继日志的内容,来同步主服务器上的操作。
7、数据定义语言日志
数据定义语句日志:记录数据定义语句执行的元数据操作。
8、慢查询日志
慢查询日志:记录所有执行时间超过long_query_time的所有查询,方便我们对查询进行优化。
查看慢查询日志是否开启,及其位置。
show variables like '%slow%'