本文由ilanniweb提供友情赞助,首发于烂泥行天下php
想要得到更多的文章,能够关注个人微信ilanniwebmysql
其实这篇文章很早就想写了,可是一直没有时间。恰好今天下午稍微空了点,就把这篇文章整理出来。nginx
有关phpmyadmin的文章,在百度一搜,能搜出来不少。这篇文章我就介绍下,如何经过phpmyadmin控制开发人员对数据库的操做。web
固然有关数据库的安全,咱们能够从三个方面进行考虑:sql
1)、mysql数据库服务器,包括服务器自己的安全等。数据库
2)、mysql访问权限,包括数据库用户权限,以及访问数据库方法等。安全
3)、mysql数据库访问后的安全,包括是否容许导出数据等。服务器
今天咱们经过phpmyadmin来控制开发人员对数据库的操做,其实就是结合第二点和第三点来禁止用户访问数据库后导出数据。微信
首先咱们来先安装phpmyadmin,在此咱们使用的是源码方式进行安装,并且安装的是最新版4.6.4,以下:app
wget https://files.phpmyadmin.net/phpMyAdmin/4.6.4/phpMyAdmin-4.6.4-all-languages.zip
unzip phpMyAdmin-4.6.4-all-languages.zip -d /data/dg/
mv /data/dg/phpMyAdmin-4.6.4-all-languages/ /data/dg/app_db/
chmod 755 -R /data/dg/app_db/
注意:phpmyadmin须要lnmp环境,因此在运行phpmyadmin以前,须要把相关的基础的环境安装好。
phpmyadmin解压安装完毕后,咱们再来配置下nginx,以下:
在此我开启了nginx的目录索引功能,主要是考虑到了若是有多个数据库的话,咱们能够经过目录名称的方式进行区分。
好比,咱们线上的数据库以下:
如今访问一下,以下:
经过上图,咱们能够很明显的看出,目前已经能够正常访问phpmyadmin了,可是须要咱们输入相关的用户名和密码。
第一章节中,咱们已经安装好了phpmyadmin,这一章节咱们来配置下phpmyadmin,免密码登录访问。
在此咱们以app_db这个数据库为例。要实现免密码登录访问以前,咱们还须要先在mysql数据库中建立一个针对app_db数据库的只读用户ilanniread。
建立sql语句以下:
mysql -hrm-bp183j9f186nd4933.mysql.rds.aliyuncs.com -uroot -p'ilanni' -e "grant select on app_db.* to 'ilanniread'@'%' identified by 'readonlyQWE';
ilanniread建立完毕后,咱们如今来修改phpmyadmin的配置文件config.default.php。
对于config.default.php文件,咱们只须要修改10六、25二、259行,其中第106行是数据库的链接地址,而第252行和259行分别是数据库的用户名和密码。以下:
修改完毕后,咱们再来访问下,看看实际的效果,以下:
经过上图,咱们能够很明显的看到,目前访问phpmyadmin是不须要输入数据库的用户名和密码了。
并且经过这样作之后,咱们也可让开发人员不须要知道数据库实际的地址以及数据库的用户名和密码,相对来讲安全性仍是提升了很多。
第二章节,咱们配置了phpmyadmin的免密码访问,如今再来配置如何禁止经过phpmyadmin导出查询出来的数据。
默认状况下,phpmyadmin是能够导出整个数据库的,以下:
为了防止开发人员私自导出查询出来的结果,咱们能够这样处理,把phpmyadmin根目录下的tbl_export.php或者export.php文件进行重命名便可,以下:
mv export.php export.php.bak
修改完毕后,咱们再来导出数据看看,以下:
经过上图,咱们能够很容易的看出目前没法把数据导出,这样就达到了咱们禁止phpmyadmin导出数据的目的。
注意:export.php文件是针对整个数据库的导出的,若是要禁止查询后的导出,那么须要咱们重命名tbl_export.php文件便可。
PS:安全是相对的,没有绝对的安全,咱们只能作到防君子不防小人。