一.导言
很多文章会说数据库的权限是基于最小权限原则的。这句话本身没有问题,但是是空句。因为最小权限这个东西太抽象了,很多时候你不知道他需要哪些权限。现在,很多mysql都是用root账号操作的。不是大家不知道使用root权限太不安全,而是很多人不知道给什么样的权限才是安全的,才能保证正常运行。因此,本文更多的是关于如何在这种情况下简单地配置一个安全的mysql。注:本文的测试环境是mysql-5.6.4
II。Mysql权限介绍。
mysql中控制权限有四个表,分别是user表、db表、tables_priv表和columns_priv表。
mysql权限表的验证过程是:
1.首先从用户表中的主机、用户、密码三个字段判断连接的ip、用户名、密码是否存在,如果存在则进行验证。
2.身份验证后,按照user、db、tables_priv、columns_priv的顺序分配权限并进行验证。也就是说,首先检查全局权限表用户。如果user中对应的权限是Y,那么这个用户对所有数据库的权限都是Y,所以不会再检查DB,tables _ priv,columns _ priv。如果是N,在db表中查看该用户对应的具体数据库,得到Y在db中的权限;如果是db中的N,则在tables_priv中查看这个数据库对应的具体表,获取表中的权限Y,以此类推。
3.mysql有哪些权限?
四、数据库层面(db表)的权限分析四。数据库级权限分析(数据库表)
动词 (verb的缩写)mysql安全配置方案
1个限制访问mysql端口的ip
Windows可以被windows防火墙或ipsec限制,而linux可以被iptables限制。
2修改mysql的端口
Windows可以修改配置文件my.ini来实现,linux可以修改配置文件my.cnf来实现。
3为所有用户设置强密码,严格指定对应账户的访问ip。
用户可访问的ip可以在mysql的用户表中指定。
4根特权帐户的处理
建议为root帐户设置强密码,并指定只允许本地登录。
5日志的处理
如果需要,可以打开查询日志,它将记录登录和查询语句。
6 mysql进程运行账号
windows下禁止使用本地系统运行mysql账户。可以考虑使用网络服务或者自己新建一个账号,但是一定要给mysql程序所在目录的读权限和数据目录的读写权限。在linux下,新建一个mysql账号,在安装时指定mysql作为mysql账号运行,赋予程序目录的读取权限和数据目录的读写权限。
7 MySQL运行账号的磁盘权限
1)1)MySQL运行账号需要被赋予程序所在目录的读取权限和数据目录的读写权限
2)不允许被赋予其他目录的写入和执行权限,尤其是有网站的目录。
3)取消mysql运行账号对cmd、sh等程序的执行权限。
8网站使用mysql帐号的处理
创建一个新帐户,并授予该帐户使用的数据库中的所有权限。这样既能保证网站可以操作所有对应的数据库,又能保证账号不会受到权限过大的影响。授予单个数据库所有权限的帐户将没有超级、进程、文件和其他管理权限。当然,如果你能清楚的知道我的网站需要哪些权限,就不要多给权限了,因为很多时候发布者并不知道网站需要哪些权限,所以我建议上面的配置。更何况我的意思是只有几台机器。如果机器不多,我个人建议只给需要的权限。详情请参考上表建议。
9删除无用的数据库
默认情况下,测试数据库对新创建的帐户具有权限
VI。mysql入侵分析及防范措施。
一般来说,mysql提出权利的方式有以下几种:
1自定义项权利提升
这种方法的关键是导入一个dll文件。个人认为只要合理控制进程账号对目录的写权限,就可以防止dll文件被导入。然后,在出现违规的情况下,只要进程账号的权限足够低,就不进行高风险的操作,比如添加账号。
2写启动文件。
这种方式同上,但还是要合理控制进程账号对目录的写权限。
3当root账号泄露时
如果root账号管理不当,root账号被入侵,数据库信息无法保证。但是如果控制了进程账号的权限,控制了磁盘的权限,还是可以保证服务器不倒的。
4常见账号泄露(如上所述,只对某个库拥有全部权限的账号)
这里说的普通账号是指网站使用的账号。我的一个更方便的建议是直接给一个特定的库所有的权限。账号泄露包括存在注入和web服务器被入侵后直接获取数据库账号密码。
此时对应数据库的数据没有保障,但不会威胁到其他数据库。而且这里的普通账号没有文件权限,无法将文件导出到磁盘。当然,此时会严格控制进程的帐户的权限。
给普通账号什么样的权限,上表可以看出来,但并不是所有权限都直接给一个库。
七。安全配置所需的常用命令
1.创建一个新用户,并授予相应的数据库权限
授予对数据库的Select、Insert、Update、Delete、create、Drop权限。*发送给由‘标识的用户@本地主机;passwd ’
授予对数据库的所有权限。*发送给由‘标识的用户@本地主机;passwd ’
2.刷新权限
刷新权限;
3.显示授权
显示授权;
4.删除授权
在*上撤销删除。*来自‘杰克’@’本地主机’;
5.删除用户
删除用户‘杰克’@’本地主机’;
6.重命名用户。
重命名用户‘杰克’@’%’到‘吉姆’@’%’;
7.更改用户的密码
为‘设置密码;root & # 8217@’本地主机’=密码(‘123456’);
8.删除数据库
删除数据库测试;
9.从数据库导出文件
select * from a into outfile & # 8220~/ABC . SQL ”
本文来自微笑向暖投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/644789.html