MySQL安全涉及:Backup/Recovery,Network,System,DB features,General Issues
一、General Issues:
1.最小权限原则:mysql.user
权限有几个限制:
a. 只能允许,不能拒绝
b. create/ drop 无法区分是针对table,还是DB
c. password 只能授予 user object,不能是其他对象(db, table, or routine)
2.健壮的密码:mysql_config_editor,hash(hash(password)+salt),Linux History Clear
保护:system access 最小化权限
创建/修改用户SQL中password会被mysql重写保护,禁止直接:insert/update mysql.user,会记录到日志
轮替策略:validate_password plugin
3.防火墙式ACL,IP Limitations:
如果是因为DNS解析问题,mysqladmin flush-hosts,刷新DNS host cache
4.Client Programming Security
5.传输加密:tcpdump -l -i eth0 -w - src or dst port 3306 | strings
6.禁止root启动MySQL
file privilege:可以启动mysqld的用户权限写数据到系统中 into outfile,还可以读系统中的数据 load data,用 [secure_file_priv] 限制
plugin_dir:限制同上
process privi : 可以看到正在执行的SQL,包括密码设置
7.config variables
binary_encryption = ON
have_symlink = DISABLE
stored object access control
[load data ] local-infile = 0
bind_address | skip-network : login locally
require_secure_transport = ON
8.Account Categories
Partial Revokes from Global privileges
9.修改权限之后,如何生效:
1.Grant操作,直接生效;
2.insert操作,需要mysqladmin flush-privileges | reload;
3.table/column级,下一请求即生效;
database级,执行下一个"use db;"后生效;
global和password级,下一个session生效;
4.user():登录mysql的user; current_user():当前被授权的user,即正在用来操作数据库的user;