有很多朋友用惯了phpmyadmin,不习惯用mysql客户端(比如nacicat)。
并且他们根据网上的教程,自己安装过程中总是出现一大堆问题和报错,太不靠谱了。
所以,我就亲自示范 来讲解如何安装nginx
下的phpmyadmin
。
还是以ubuntu
服务器为例讲解。
第一步,安装phpmyadmin源代码
注意:如果你之前已经安装配置过phpmyadmin,需要先卸载再重新安装。
卸载phpmyadmin
命令:sudo apt-get purge phpmyadmin
再安装phpmyadmin:
因为ubuntu下已经有phpmyadmin的源,直接用命令安装即可。
安装phpmyadmin
命令:
sudo apt-get install phpmyadmin
会出现图形化界面,有个非常重要的地方需要注意下,看图,
按tab
键来切换。
这样就安装成功了。
注意:
第一步里不要选apache2
或者lighttpd
,因为我们的nginx
不在这2个选项里面,直接按tab
跳到<Ok>
就行。
第二步,设置phpmyadmin路径
因为用命令安装的phpmyadmin
默认是存放在/usr/share/phpmyadmin
下面,而我们的nginx
指定的项目路径是在/var/www/html
下面。
所以我们创建个软链接,把/usr/share/phpmyadmin
指向/var/www/html
。
sudo ln -s /usr/share/phpmyadmin /var/www/html
可以看到: 默认是777权限,并且所有者是root用户。
这样的话,你就可以直接在浏览器通过 IP地址/phpmyadmin
来访问了。
比如
http://120.78.205.87/phpmyadmin/
但是,这样访问会出现403 forbidden
的错误。
为什么呢?
因为在nginx默认的虚拟主机配置文件里,没有配置php解析器。
我们需要修改下nginx默认的虚拟主机配置文件。
第三步,修改nginx默认的虚拟主机配置文件
默认的虚拟主机配置文件路径为/etc/nginx/sites-available/default
。
sudo vim /etc/nginx/sites-available/default
改为:
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.php index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
location /phpmyadmin {
index index.php;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
保存后,重启nginx
服务器。
sudo systemctl restart nginx
第四步 测试
最后再测试下,正常情况下应该没问题了。
比如:
http://120.78.205.87/phpmyadmin/
其余的话
其实真的不建议用phpmyadmin
,因为web端是最容易受攻击的,特别是phpmyadmin
,如果受攻击 获取了root权限,那后果不堪设想。
我们一般建议用mysql客户端,比如nacicat
,虽然难操作,但是安全很多。
既然这么不安全,那么能不能稍微改完全一点呢?
可以的,我们可以这么做:
- 更改默认的phpMyAdmin URL
- 设置Nginx身份验证网关
更改默认的phpMyAdmin URL
也就是说把urlhttp://IP/phpmyadmin
改成其他名字,比如改成http://IP/nothingtosee
。
那么我们就直接通过http://IP/nothingtosee
去访问phpmyadmin就行了。
比如:
http://120.78.205.87/nothingtosee/
先在服务器,把phpmyadmin
文件夹改成nothingtosee
;
再测试:
设置Nginx身份验证网关
什么意思呢?
就是另外设个http弹窗密码,只有这个弹窗密码输入对了,才显示phpmyadmin登录界面。
这样:
所以你需要先想个用户名和密码。
比如我的http弹窗用户名和密码是zou
和123456
。
这个密码不能明文写,需要加密处理下:
也就是输入openssl passwd
命令,输入密码,给密码加密。
然后再创建一个文件,来保存用户名和密码。
sudo vim /etc/nginx/pma_pass
文件里的内容是:
zou:FMMbNGcvZZ/us
zou
就是用户名。FMMbNGcvZZ/us
就是加密后的密码。
注意:用户名和密码用:
隔开。
用户名和密码的文件保存好了,我们下一步就需要配置nginx虚拟主机来读取该文件来验证。
sudo vim /etc/nginx/sites-available/default
添加如下代码:
location /nothingtosee {
auth_basic "Admin Login";
auth_basic_user_file /etc/nginx/pma_pass;
}
保存后,重启nginx服务
sudo systemctl restart nginx
前台测试就ok了。
如何禁止root登录phpmyadmin?
为了安全,我们可以禁止root登录。
到phpmyadmin的安装目录。
本教程的是在/var/www/html
,编辑配置文件config.inc.php
cd /var/www/html
vim config.inc.php
搜索下AllowRoot
,
如果存在的话就改成false
$cfg['Servers'][$i]['AllowRoot'] = FALSE;
如果不存在的话就添加一行
$cfg['Servers'][$i]['AllowRoot'] = FALSE;
这样就ok了。
前台用root登录测试下,看是否生效。