Mysql安全加固
帐号安全
1.禁止 MySQL以管理员帐号权限运行
以普通帐户安全运行 mysqld,禁止以管理员帐号权限运行 MySQL 服务。
2.避免不同用户(应用)间共享帐号
在 /etc/my.cnf 配置文件中进行以下设置。
a. 创建用户
mysql> insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) values("localhost","pppadmin",password("passwd"),'','','');
b. 使用该用户登录 MySQL 服务
mysql>exit;
@>mysql -u phplamp -p
@>输入密码
mysql>登录成功
3.删除无关帐号
DROP USER 语句可用于删除一个或多个 MySQL 账户。如
DROP USER test;
使用 DROP USER 命令时,必须确保当前账号拥有 MySQL 数据库的全局 CREATE USER 权限或DELETE 权限。账户名称的用户和主机部分分别与用户表记录的 User 和 Host 列值相对应。 执行DROP USER user; 语句,可以取消一个账户和其权限,并删除来自所有授权表的帐户权限记录。
口令
检查账户默认密码和弱密码。口令长度需要至少八位,并包括数字、小写字母、大写字母和特殊符号四类中的至少两种类型,且五次以内不得设置相同的口令。密码应至少每 90 天进行一次更换。可以通过执行以下命令修改密码。
mysql> update user set password=password('test!p3') where user='root';
mysql> flush privileges;
授权
针对某个数据库,根据用户的业务需要,配置其所需的最小权限。
a. 查看数据库授权情况。
mysql>use mysql;
mysql> select * from user;
mysql>select * from db;
mysql>select * from host;
mysql>select * from tables_priv;
mysql>select * from columns_priv;
b. 通过 revoke 命令回收不必要的或危险的授权。
开启日志审计功能
数据库管理系统应配置日志功能,便于记录运行状况和操作行为。
MySQL 服务有以下几种日志类型:
- 错误日志: -log-err
- 查询日志: -log (可选)
- 慢查询日志: -log-slow-queries (可选)
- 更新日志: -log-update
- 二进制日志: -log-bin
找到 MySQL 的安装目录,在 my.ini 配置文件中增加上述所需的日志类型参数,保存配置文件后,重启MySQL 服务即可启用日志功能。
例如,
#Enter a name for the binary log. Otherwise a default name will be used.
#log-bin= #Enter a name for the query log file.Otherwise a default name will be used.
#log= #Enter a name for the error log file. Otherwise a default name will be used.
log-error= #Enter a name for the update log file. Otherwise a default name will be used.
#log-update=
该参数中启用错误日志。如果需要启用其他的日志,只需把对应参数前面的 “#” 删除即可。
日志查询操作说明:
- 执行show variables like 'log_%'; 命令可查看所有的 log。
- 执行show variables like 'log_bin'; 命令可查看具体的 log。
安装最新补丁
确保系统安装了最新的安全补丁。 注意: 在保证业务及网络安全的前提下,并经过兼容性测试后,安装更新补丁。
如果不需要,应禁止远程访问
禁止网络连接,防止猜解密码攻击、溢出攻击、和嗅探攻击。
注意: 仅限于应用和数据库在同一台主机的情况。
设置可信 IP 访问控制
- 操作系统层面拦截:通过数据库所在操作系统的防火墙限制,实现只有信任的 IP 才能通过监听器访问数据库。
- DBMS层面拦截:
mysql> GRANT ALL PRIVILEGES ON db.*-> -> TO 用户名@'IP子网/掩码';
连接数设置
根据机器性能和业务需求,设置最大、最小连接数。 在 MySQL 配置文件(my.conf 或 my.ini)的[mysqld]配置段中添加max_connections = 1000,保存配置文件,重启 MySQL 服务后即可生效。

共有 0 条评论