Ubuntu14.04在Nginx下安装phpMyAdmin并加强安全设置
参考来自DigitalOcean社区的介绍。
首先请确认搭建好了LEMP环境:在Ubuntu14.04上搭建LEMP环境。
一、安装phpMyAdmin
1.安装phpMyAdmin
安装phpMyAdmin非常简单:sudo apt-get update
sudo apt-get install phpmyadmin
注意安装时会要求选择web服务器类型,因为Nginx不在其中,所以直接按TAB跳过。
接下然会询问是否使用dbconfig-common
来配置phpMyAdmin数据库,这里选择YES。
然后输入MySQL的root
密码。
最后创建存储phpMyAdmin自身数据的数据库的密码。
2.创建符号链接
以上安装完毕后还要给phpMyAdmin文件夹创建符号链接,这样才能通过浏览器访问phpMyAdmin:sudo ln -s /usr/share/phpmyadmin /usr/share/nginx/html
这里符号链接是创建到Nginx web服务器的根路径/usr/share/nginx/html
,可以自由修改。
然后使phpMyAdmin的PHP依赖模块mcrypt
生效:sudo php5enmod mcrypt
重启PHP服务:sudo service php5-fpm restart
这样就可以在浏览器中访问了:http://server_domain_or_IP/phpmyadmin
登录账号即为root
,密码即为MySQL的root
密码:
二、加强phpMyAdmin安全设置
1.修改phpMyAdmin登录路径
phpMyAdmin的默认地址为http://server_domain_or_IP/phpmyadmin
为了防止轻易被猜出phpMyAdmin登录界面,可以修改符号链接名字:cd /usr/share/nginx/html
ls -l
可以看到:total 8
-rw-r--r-- 1 root root 537 Mar 4 06:46 50x.html
-rw-r--r-- 1 root root 612 Mar 4 06:46 index.html
lrwxrwxrwx 1 root root 21 Aug 6 10:50 phpmyadmin -> /usr/share/phpmyadmin
所以就是要修改最后一行phpmyadmin
:sudo mv phpmyadmin nothingtosee
ls -l
这时:total 8
-rw-r--r-- 1 root root 537 Mar 4 06:46 50x.html
-rw-r--r-- 1 root root 612 Mar 4 06:46 index.html
lrwxrwxrwx 1 root root 21 Aug 6 10:50 nothingtosee -> /usr/share/phpmyadmin
如果再以http://server_domain_or_IP/phpmyadmin
登录就会得到404错误,这时新的登录地址为http://server_domain_or_IP/nothingtosee
2.增加一层登录认证
虽然上述更改了登录phpMyAdmin的登录路径,但仍然有可能被发现登录界面,对登录密码进行暴力破解。
所以可以利用Nginx对phpMyAdmin再增加一层登录口令认证,即输入正确口令后才能进入phpMyAmdin登录界面。
首先创建加密密码:openssl passwd
输入希望的密码,然后会返回加密后的密码,像这样:O5az.RSPzd.HE
复制这个密码,下面要用到。
接下来创建登录认证文件:sudo nano /etc/nginx/pma_pass
在里面输入如下代码:demo:O5az.RSPzd.HE #demo更改为喜欢的用户名,O5az.RSPzd.HE即为之前复制的加密密码
保存文件并退出。
接下来在Nginx配置文件中对http://server_domain_or_IP/nothingtosee
这个路径关联登录认证:sudo nano /etc/nginx/sites-available/default #这个路径可能需要自行修改
文件内容大体如下:
server {
. . .
location / {
try_files $uri $uri/ =404;
}
. . .
}
加入如下代码:
location /nothingtosee {
auth_basic "Admin Login";
auth_basic_user_file /etc/nginx/pma_pass;
}
最后如下:
server {
. . .
location / {
try_files $uri $uri/ =404;
}
location /nothingtosee {
auth_basic "Admin Login";
auth_basic_user_file /etc/nginx/pma_pass;
}
. . .
}
保存文件并退出后重启Nginx服务使其生效:sudo service nginx restart
现在当登录http://server_domain_or_IP/nothingtosee
时就会出现:
输入上述创建的用户名和密码后才能进入phpMyAdmin登录界面。