权限 | 说明 | 网站使用账户是否给予 |
Select | 可对其下所有表进行查询 | 建议给予 |
Insert | 可对其下所有表进行插入 | 建议给予 |
Update | 可对其下所有表进行更新 | 建议给予 |
Delete | 可对其下所有表进行删除 | 建议给予 |
Create | 可在此数据库下创建表或者索引 | 建议给予 |
Drop | 可删除此数据库,及此数据库下的表 | 不建议给予 |
Grant | 赋予权限选项 | 不建议给予 |
References | 未来MySQL特性的占位符 | 不建议给予 |
Index | 可对其下的所有表进行索引 | 建议给予 |
Alter | 可对其下的所有表进行更改 | 建议给予 |
Create_tmp_table | 创建临时表 | 不建议给予 |
Lock_tables | 可对其下所有表进行锁定 | 不建议给予 |
Create_view | 可在此数据下创建视图 | 建议给予 |
Show_view | 可在此数据下查看视图 | 建议给予 |
Create_routine | 可在此数据下创建存储过程 | 不建议给予 |
Alter_routine | 可在此数据下更改存储过程 | 不建议给予 |
Execute | 可在此数据下执行存储过程 | 不建议给予 |
Event | 可在此数据下创建事件调度器 | 不建议给予 |
Trigger | 可在此数据下创建触发器 | 不建议给予 |
0x00 安全策略
1 限制访问mysql端口的ip
windows可以通过windows防火墙或者ipsec来限制,linux下可以通过iptables来限制。
2 修改mysql的端口
windows下可以修改配置文件my.ini来实现,linux可以修改配置文件my.cnf来实现。
3 对所有用户设置强密码并严格指定对应账号的访问ip
mysql中可在user表中指定用户的访问可访问ip
4 root特权账号的处理
建议给root账号设置强密码,并指定只容许本地登录
5 日志的处理
如需要可开启查询日志,查询日志会记录登录和查询语句。
6 mysql进程运行账号
在windows下禁止使用local system来运行mysql账户,可以考虑使用network service或者自己新建一个账号,但是必须给与mysql程序所在目录的读取权限和data目录的读取和写入权限; 在linux下,新建一个mysql账号,并在安装的时候就指定mysql以mysql账户来运行,给与程序所在目录的读取权限,data所在目录的读取和写入权限。
7 mysql运行账号的磁盘权限
1)mysql运行账号需要给予程序所在目录的读取权限,以及data目录的读取和写入权限
2)不容许给予其他目录的写入和执行权限,特别是有网站的。
3)取消mysql运行账户对于cmd,sh等一些程序的执行权限。
8 网站使用的mysql账户的处理
新建一个账户,给予账户在所使用数据库的所有权限即可。这样既能保证网站对所对应的数据库的全部操作,也能保证账户不会因为权限过高而影响安全。给予单个数据库的所有权限的账户不会拥有super, process, file等管理权限的。 当然,如果能很明确是的知道,我的网站需要哪些权限,还是不要多给权限,因为很多时候发布者并不知道网站需要哪些权限,我才建议上面的配置。而且我指的通用的,具体到只有几台机器,不多的情况下,我个人建议还是给予只需要的权限,具体可参考上面的表格的建议。
9 删除无用数据库
test数据库对新建的账户默认有权限