您的MySQL安全吗?数据是最有价值的资产,数据安全已经成为重中之重。本篇将介绍如何使用SQL语句确保MySQL的安全性。
为什么是SQL而不是其他?使用SQL管理数据库相比较其他方法而言具有如下优势:
-
DBA不需要使用SSH等方法登录到MySQL所在的操作系统执行操作,可以省略操作系统的权限问题。
-
DBA的操作可以通过捕获SQL进行审计。
-
操作系统管理员无需触碰MySQL。
-
DevOps友好——面向服务
-
适合自动化修复
MySQL从8.0开始,将许多配置管理任务应用到SQL语句,接下来我们将逐一梳理。
首先,用户第一件事情是增强root账户的密码安全性。当用户安装MySQL时,根据所选的安装包进行初始密码的输入,Window的安装向导和DEB的安装过程中会提示输入root账户的初始密码,rpm的安装方式则会生成一个随机初始密码。使用随机密码连接MySQL后,首先要执行更改密码的语句,否则将报错。更改密码使用如下SQL:
ALTER USER root@localhost IDENTIFIED BY '';
注意,MySQL中可能会存在多个root账户,修改的密码仅仅是“root@localhost”,考虑安全性问题,可以删除全局账户,后缀为“%”,如果需要远程连接,需要对主机名进行限制。
设置密码策略。相关组件是否已安装?可以通过以下SQL语句进行查看:
SELECT component_urn, 'PASSWORD Policy Component Installed?' as Note, if(count(component_urn) > 0, 'YES', 'NO') as Answer FROM mysql.component where component_urn='file://component_validate_password' group by component_urn;
查看密码策略的SQL语句:
SELECT VARIABLE_NAME, VARIABLE_VALUE
FROM performance_schema.global_variables
where VARIABLE_NAME like 'valid%password%'
OR VARIABLE_NAME='default_password_lifetime';
改变密码策略的SQL语句:
#安装组件
INSTALL COMPONENT 'file://component_validate_password';
#设置策略
set persist validate_password.check_user_name='ON';
set persist validate_password.dictionary_file='