MySQL(06) mysql用户管理、权限管理和日志管理

发布于:2025-07-24 ⋅ 阅读:(21) ⋅ 点赞:(0)

一、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%'


网站公告

今日签到

点亮在社区的每一天
去签到