关于加强数据库安全的一些实践

最近遇到的一件悲催的事情,我写的一个web应用部署上服务器没多久刚刚有第一批用户数据库就被人黑掉了,所有用户数据全部没了,在一些前辈的建议下,亡羊补牢采取了一些补救措施,总结如下,如果你也是小白,希望能对你有所帮助。

 

1.修改数据库服务密码

一般默认安装好的mysql服务用户root密码root,为了安全起见还是修改一个复杂点的数据库密码比较好。

 

2.关闭没有使用的端口,开启防火墙

    用了哪些端口开启哪些端口,比如我这里只用到了三个端口,那我只开启这三个端口的访问权限(一般防火墙设置文件在/etc/sysconfig/iptables)

                  

3.干掉数据库dropdelete权限

   命令行或phpmyadmin登录操作,干掉所有用户的dropdelete权限,保存

      

4.禁止外网访问mysql操作,限制127.0.0.1即服务器本地

   进入服务器,编辑/etc/my.cnf,将mysql访问绑定ip127.0.0.1

                                           

5.脚本自动定期备份数据库

  写好数据库备份脚本,设置定期自动执行

 

  有需要的朋友可以参考:https://github.com/yubang/mysqlBackupTools/blob/master/mysqlBackupTools.py

  修改一些配置参数就可以拿来用了

                   

  PS.执行的脚本文件路径要写成绝对路径;由于mysqldump的执行时会消耗服务器资源,所以建议设置深夜自动备份

  执行自动备份脚本遇到的问题:

mysqldump: Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=1': You have an error in your SQL syntax; check the manual that

corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_QUOTE_SHOW_CREATE=1' at line 1 (1064)

 

这是因为系统默认的mysqldump版本太低,我们应该将脚本中执行的mysqldump指向mysql server目录下mysqldump

(1)使用mysqldump --version可以查看mysqldump的版本

  

 

   很明显我的mysqldump版本太低了,因为mysql的版本是5.6

 

(2)使用which mysqldump可以查看默认的mysqldump目录

  

 

 

 

(3)使用locate查看还有那些mysqldump

 

     可以看到有三处地方有mysqldump,由于/usr/bin/nysqldump是指向/usr/local/mysql/bin/mysqldump的软链接,所以很明显/usr/local/mysql.bak/bin/mysqldump才是我们想要的,把脚本中的mysqldump写全路径替换成/usr/local/mysql.bak/ bin/mysqldump,再手动执行一次脚本,发现执行成功没有报错。

        

 查看设置的备份文件目录/backup,备份成功

        

 

 

posted @ 2016-05-30 15:36  胡少爷  阅读(243)  评论(0编辑  收藏  举报