导读mysql
如何提升MySQL的安全性?sql
数据库的安全性无疑很重要,这里教你们几招简单方法提升安全性。数据库
1. 正确设置 datadir 权限模式安全
关于 datadir 正确的权限模式是 0750,甚至是 0700。socket
也就是最多只容许 mysqld 进程属主用户及其所在用户组可访问,但只有属主可修改文件。tcp
最好是直接设置成 0700,相对更安全些,避免数据文件意外泄漏。工具
2. 将 mysql socket 文件放在 datadir 下加密
不少人习惯将 mysql socket文件放在 /tmp 目录下。spa
尤为是跑多实例时,/tmp 目录下可能有 mysql3306.sock、mysql3307.sock、mysql3308.sock 等多个这样的文件。server
要注意,mysql.sock 文件默认的权限模式是 0777,也就是任何人都有机会经过 /tmp 目录下的 socket 文件直接登入 mysql,尤为是root密码为空或弱密码,而且还容许本地 socket 方式登入时,是个比较危险的安全隐患。
所以,咱们强烈建议把 mysql socket 文件放置在每一个实例本身的 datadir 下,而且参考第一条建议,设置正确的权限模式。同时甚至也能够把 mysql.sock 文件权限模式修改成 0700。
3. 使用login-path
通常来讲,咱们会为每一个mysql帐户设置密码,这样是安全了,但使用和维护起来就不方便了。
每次登入都要输入密码,尤为是调用mysql client工具时,若是直接将密码写在client工具的选项里,则是很是危险的行为,从历史命令就能看到密码了,而且会有相似下面的提示:
这时候,咱们其实能够利用 login-path 功能来提升安全性及便利性。
login-path 特性是MySQL 5.6新增的。
首先,利用 mysql_config_editor 配置login-path:
设置完后,就会在该用户的 $HOME目录下生成 .mylogin.cnf 文件:
这是个加密的二进制文件,即使用明文方式查看,也是没法显示密码的:
接下来能够利用 login-path 很方便的登入 mysqld 而无需额外的密码:
在作好前面两条安全规则的前提下,即使万一某个高权限等级用户的 .mylogin.cnf 文件被其余普通用户盗取,也没法利用 socket 方式登入 mysql。
固然了,除非你以前在 login-path 里设置的是走 tcp/ip 方式,那就悲剧了~
下面是假设 yejr 普通帐号想利用 root 帐号的 .mylogin.cnf 文件登入,报告失败,由于没法访问 /data/mysql57/mysql.sock 文件: