当前位置: 首页 > 科技观察

如何提高MySQL的安全性?这些简单的小技巧可以帮到你_0

时间:2023-03-16 20:32:04 科技观察

数据库的安全性无疑是非常重要的。以下是一些提高安全性的简单方法。1、正确设置datadir权限模式。datadir正确的权限模式是0750,甚至是0700。即最多只允许mysqld进程的owner用户及其用户组访问,但只有owner可以修改文件。***直接设置为0700,相对安全,避免数据文件不小心泄露。[yejr@imysql.com]#chown-Rmysql.mysql/data/mysql57[yejr@imysql.com]#chmod0700/data/mysql57[yejr@imysql.com]#ls-la/data/drwxr-x---.8mysqlmysql4096Feb1408:08mysql572。把mysqlsocket文件放在datadir很多人习惯把mysqlsocket文件放在/tmp目录下。尤其是运行多实例时,/tmp目录下可能存在多个mysql3306.sock、mysql3307.sock、mysql3308.sock等文件。需要注意的是,mysql.sock文件默认的权限模式是0777,即任何人都有机会通过/tmp目录下的socket文件直接登录mysql,尤其是root密码为空或者弱密码的情况下,而且本地socket登录也是允许的,是比较危险的安全隐患。因此,我们强烈建议将mysqlsocket文件放在每个实例自己的datadir中,并参考第一个建议设置正确的权限模式。同时,你甚至可以将mysql.sock文件的权限模式改为0700。[yejr@imysql.com]#chmod0700/data/mysql57/mysql.sock[yejr@imysql.com]#ls-la/数据/mysql57/mysql.socksrwx------.1mysqlmysql0Feb1216:00/data/mysql57/mysql.sock3。使用login-path一般来说,我们都会为每个mysql账号设置一个密码,这样比较安全,但是使用和维护起来不方便。每次登录都要输入密码,尤其是调用mysql客户端工具时。如果直接在客户端工具的选项中写密码,是非常危险的行为。从历史命令中可以看到密码,会有类似下面的提示:mysql:[Warning]在命令行界面使用密码是不安全的。这时候我们其实可以使用login-path功能来提高安全性和便利性。登录路径功能是MySQL5.6中的新功能。首先,使用mysql_config_editor配置login-path:#option"-Glp-mysql57-3306"tosetthealiasoflogin-pathmysql_config_editorset-Glp-mysql57-3306-S/data/mysql57/mysql.sock-uroot-p之后设置后,会在用户的$HOME目录下生成.mylogin.cnf文件:[yejr@imysql.com]#ls-la~/.mylogin.cnf-rw--------.1yejrusers152Feb1122:42/home/yejr/.mylogin.cnf[yejr@imysql.com]#file~/.mylogin.cnf/home/yejr/.mylogin.cnf:data这是一个加密后的二进制文件,即使明文查看,密码也不能显示为:[yejr@imysql.com]#mysql_config_editorprint--allmysql_config_editorprint--all[lp-mysql57-13306]user=rootpassword=*****socket=/data/mysql57/mysql.sock接下来是login-path可以使用无需额外密码登录mysqld,非常方便:[yejr@imysql.com]#mysql--login-path=lp-mysql57-13306-e"select1+1fromdual"+-----+|1+1|+-----+|2|+-----+[yejr@imysql.com]#mysqladmin--login-path=lp-mysql57-13306pr+----+------+-----------+----+--------+-----+--------+---------------+|Id|User|Host|db|Command|Time|State|Info|+----+------+------------+----+---------+-----+---------+------------------+|3|根|本地host||Query|0|starting|showprocesslist|+----+-----+------------+----+--------+------+----------+----------------+在做好前面两条安全规则的前提下,Even如果高权限用户的.mylogin.cnf文件被其他普通用户盗用,则无法使用socket方式登录mysql。当然,除非你之前在login-path中设置了tcp/ip方式,那就悲剧了~下面是假设yejr普通账号要使用root账号的.mylogin.cnf文件登录,并且报告失败,因为无法访问/data/mysql57/mysql.sock文件:[yejr@imysql~]$/usr/local/mysql57/bin/mysql--login-path=lp-mysql57-13306ERROR2002(HY000):无法连接到localMySQLserverthroughsocket'/data/mysql57/mysql.sock'(13)