这篇文章主要为大家展示了“MySQL中安全设置的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“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中安全设置的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。