- 跨域访问,使用ssh隧道加密通信
- set password设置密码
- 用grant和revoke对用户授权
- 少开权限
- 只有启动mysql的用户有写权限
- 只授权process和super权限给管理用户
- mysqladmin processlist 可列举当前执行的查询
- super 可切断连接,改变服务器运行参数,控制从库
- 不信任dns时,权限表只设置ip
- 常见攻击
- acl控制接口权限
- 设置只有root可访问mysql数据库和user表
- 不用明文密码,密码强度高
- 数据库放在防火墙后,或在DMZ(demilitarized zone, 隔离区)
- 防火墙设置3306端口不可访问
- sql预编译,避免sql注入
- 存数据时检查大小
- 以普通用户启动mysql
- tcpdump检查传输数据的安全性
- tcpdump -l -i eth0 -w -src or dst port 3306 strings
- max_user_connections变量限制指定帐户连接数
- 打开mysqld安全开关
- -local-infile=0 # 0时客户端无法使用local load data
- -skip-grant-tables # 对用户不做访问控制
- mysqladmin flush-privileges # 运行中开启访问控制
- mysqladmin reload # 运行中开启访问控制
- -skip-show-databases # 禁止show databases