mysql数据库安全配置规范_MySQL数据库安全配置规范操作

本文详述了MySQL数据库的安全配置,包括禁止以root权限运行mysqld,限制用户权限,修改默认密码,合理设置用户权限,启用日志审计,禁用远程访问,移除测试数据库以及禁用LOCAL INFILE功能,旨在提升数据库的安全性。
摘要由CSDN通过智能技术生成

1.账号

以普通帐户安全运行mysqld,禁止mysql以root帐号权限运行,攻击者可能通过mysql获得系统root超级用户权限,完全控制系统。

配置/etc/my.cnf

[mysql.server]

user=mysql

03c7fd2c781393119501762574e15abb.png

补充操作说明

直接通过本地网络之外的计算机改变生产环境中的数据库是异常危险的。有时,管理员会打开主机对数据库的访问:

> GRANT ALL ON *.* TO 'root'@'%';

这其实是完全放开了对root的访问。所以,把重要的操作限制给特定主机非常重要:

> GRANT ALL ON *.* TO 'root'@'localhost';

> GRANT ALL ON *.* TO 'root'@'myip.athome' ;

> FLUSH PRIVILEGES;

a1617cfc8efa1b403ade483222ce4f67.png

判定条件

禁止以root账号运行mysqld;

检测操作

检查进程属主和运行参数是否包含--user=mysql类似语句:

# ps –ef | grep mysqld

#grep -i user /etc/my.cnf

dfe5493c03aa0bac9cac819901c851e9.png

用户权限

应按照用户分配账号,避免不同用户间共享账号

创建用户 设定指定ip地址登陆数据库

create user vvera@'指定ip地址' identified by [email protected]';

这样就创建了一个名为:vvera 密码为:[email protected] 的用户。

然后登录一下。

80817fa4c5c1f8a702a49ab13778217c.png

d6947a37c32cd265a65a49635fffe4ab.png

检测方法

判定条件

不用名称的用户可以连接数据库;使用不同用户连接数据库

应删除或锁定与数据库运行、维护等工作无关的账号

移除匿名账户和废弃的账户

DROP USER语句用于删除一个或多个MySQL账户。要使用DROP USER,必须拥有mysql数据库的全局CREATE USER权限或DELETE权限。账户名称的用户和主机部分与用户表记录的User和Host列值相对应。

使用DROP USER,您可以取消一个账户和其权限,操作如下:

DROP USER user;

该语句可以删除来自所有授权表的帐户权限记录。红色标识的无用账户都可以删除。

da0960c2203c6ce330b26ccf5884238c.png

使用操作命令之后的结果

drop user ''@'mysql',''@'localhost','root'@'::1','root'@'mysql';

30193b1caf9c9dac07ba7a3c7e930908.png

补充操作说明

要点:

DROP USER不能自动关闭任何打开的用户对话。而且,如果用户有打开的对话,此时取消用户,则命令不会生效,直到用户对话被关闭后才生效。一旦对话被关闭,用户也被取消,此用户再次试图登录时将会失败。

检侧操作:

mysql 查看所有用户的语句

输入指令

select user();

select user ,host ,password from mysql.user;

47737eec89ee5a27b6c47686df8b04da.png

依次检查所列出的账户是否为必要账户,删除无用户或过期账户。

2.口令

检查帐户默认密码和弱密码

修改帐户弱密码

如要修改密码,执行如下命令:

检查本地密码:(注意,管理帐号root默认是空密码)

f68112f42eb1f1bde28c5bf480ee6bb0.png

mysql> update user set password=password([email protected]') where user='root';

mysql> flush privileges;

检测方法

mysql> use mysql;

mysql> select Host,User,Password,Select_priv,Grant_priv from user;

325fc6b50bc61d710d346a569849502a.png

3.权限设置

在数据库权限配置能力内,根据用户的业务需要,配置其所需的最小权限。

合理设置用户权限

补充操作说明

有些应用程序是通过一个特定数据库表的用户名和口令连接到MySQL的,安全人员不应当给予这个用户完全的访问权。

如果攻击者获得了这个拥有完全访问权的用户,他也就拥有了所有的数据库。查看一个用户许可的方法是在MySQL控制台中使用命令SHOW GRANT

>SHOW GRANTS FOR ; 'vvera'@'localhost'

为定义用户的访问权,使用GRANT命令。在下面的例子中,vvera仅能从tanggula数据库的mserver表中选择:

> GRANT SELECT ON tanggula. mserver TO 'vvera'@'localhost';

> FLUSH PRIVILEGES;

vvera用户就无法改变数据库中这个表和其它表的任何数据。

如果你要从一个用户移除访问权,就应使用一个与GRANT命令类似的REVOKE命令:

> REVOKE SELECT ON tanggula. mserver FROM 'vvera'@'localhost';

> FLUSH PRIVILEGES;

权限

权限范围

给谁授权

权限范围

grant all

ON .

to vvera

授权vvera全库权限

grant select

ON tanggula.*

to vvera

授权vvera唐古拉数据库查看权限

grant create

ON tanggula.*

to vvera

授权vvera唐古拉数据库添加权限

授权并创建用户,并指定密码

grant 权限 on 权限范围 to 用户 identified by '密码'

回收权限

revoke 权限 on 范围 from 用户

4.日志审计

数据库应配置日志功能,

show variables like 'log_%';查看所有的log命令

e706d976d13dd92a1adb2ab3c4b79e3f.png

show variables like 'log_bin';查看具体的log命令

980ae71caf915a9cdc589210e0328cfe.png

5.禁用或限制远程访问

禁止网络连接,防止猜解密码攻击,溢出攻击和嗅探攻击。(仅限于应用和数据库在同一台主机)

参考配置操作

如果数据库不需远程访问,可以禁止远程tcp/ip连接, 通过在mysqld服务器中参数中添加 --skip-networking 启动参数来使mysql不监听任何TCP/IP连接,增加安全性。强迫MySQL仅监听本机,方法是在my.cnf的[mysqld]部分增加下面一行:bind-address=127.0.0.1

6.移除测试(test)数据库和禁用LOCAL INFILE

删除可以匿名访问的test数据库和防止非授权用户访问本地文件

移除测试(test)数据库

在默认安装的MySQL中,匿名用户可以访问test数据库。我们可以移除任何无用的数据库,以避免在不可预料的情况下访问了数据库。因而,在MySQL控制台中,执行:

635d3da0be6018ba9c0f936dc5c9de0e.png

> DROP DATABASE test;

c1dfb74186e40f4454155df2779879b8.png

禁用LOCAL INFILE

另一项改变是禁用”LOAD DATA LOCAL INFILE”命令,这有助于防止非授权用户访问本地文件。在PHP应用程序中发现有新的SQL注入漏洞时,这样做尤其重要。此外,在某些情况下,LOCAL INFILE命令可被用于访问操作系统上的其它文件(如/etc/passwd),应使用下现的命令:

mysql> SELECT load_file("/etc/passwd")

73a2bf248baba5317a8039078a172e33.png

为禁用LOCAL INFILE命令,应当在MySQL配置文件的[mysqld]部分增加下面的参数:

set-variable=local-infile=0

73dc6eb2eda2fc51284f35811f5a0ccd.png

检查操作

Mysql>show databases;

c3779b96771eb6fd022b03cbb353bd1a.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值