共计 1760 个字符,预计需要花费 5 分钟才能阅读完成。
这篇文章主要为大家展示了“MySQL 中安全设置的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“MySQL 中安全设置的示例分析”这篇文章吧。
MySQL 安全设置
服务器启动后,可以执行
mysql_secure_installation;
此时输入 root 原始密码(初始化安装的话为空),接下来,为了安全,MySQL 会提示你重置 root 密码,移除其他用户账号,禁用 root 远程登录,移除 test 数据库,重新加载 privilege 表格等,你只需输入 y 继续执行即可。
运行 mysql_secure_installation 会执行几个设置:
a)为 root 用户设置密码
b)删除匿名账号
c)取消 root 用户远程登录
d)删除 test 库和对 test 库的访问权限
e)刷新授权表使修改生效
绑定 IP
–bind-address=IP
1. 修改 root 用户密码
可以通过 mysql_secure_installation 完成
2. 正确授权
mysql 库中有 4 张权限表,user、db、tables_priv、columns_priv, 分别对应用户密码、用户对数据库的权限、对表的权限、对列的权限。
当一个用户向 MySQL 发起请求时,首先会从 user 表中验证 host、user、password,然后依次验证 db、tables_priv、columns_priv,验证过程中,如果 db 表中对应的权限为 Y,则用户对某个库的权限全为 Y,将不再验证 tables_priv 和 columns_priv。
对于 MySQL 中的账户权限相关的安全配置,总结如下:
针对每个网站建立单独的账户
为每个网站家里专属数据库
按照 user- db- tables_priv- columns_pri 的顺序进行细粒度的权限控制
为每个用户单独配置一个专属数据库,保证当前的用户所有操作只能发生在自己的数据库中,防止 SQL 注入发生后,黑客通过注入访问到系统表。
3.MySQL 网络安全配置
禁止 root 用户远程登陆
防火墙设置
更改默认端口,可以一定程度上防止 端口扫描 工具扫描
限制单个用户的连接数量:
max_user_connections 20
4. 文件权限及文件安全
使用非 root 用户启动 MySQL 服务
限制启动 MySQL 的用户的文件权限,同时保证用户对 MySQL 的数据文件有读写权限
可以使用 chroot 更改根目录,防止非 root 用户访问到一些敏感文件,比如:/etc/passwd
不要给非 root 用授予 process 和 super 权限,mysqladmin processlist 和 show processlist 命令会查看到任何用户执行的命令,这可能看到其他用户执行的 update user set passoword=…;命令,supper 权限可以终止会话,更改系统参数等
不要对表的使用软连接(–skip-symbolic-links 参数用来禁用这一功能),表的软连接接只有 MyISAM 支持,因为开启表的软连接后(尤其时对于使用系统 root 用户启动的 MySQL 服务),MySQL 用户就可以使用 mysqld 来删除、重命名数据文件所在的位置以外的文件了。
如果 plugin 文件夹可以被 MySQL Server 写,那么用户就可以使用 select … into
dumpfile 命令把可以执行代码写入到里面,可以通过把 plugin_dir 参数对应的路径设为只读以及调整 –secure-file-priv 参数来提高安全性
不要给非 root 用户授予文件的读写权限,防止使用 load data local infile 来提取本地文件(比如 /etc/passwd 里的信息,会对系统安全造成威胁)
[mysqld]
local-infile=0
5. 如果有必要,可以删除~/.bash_history 文件,防止读取历史命令
#rm .bash_history
.mysql_history
#ln -s /dev/null .bash_history
#ln -s /dev/null .mysql_history
以上是“MySQL 中安全设置的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!