CentOS 7.9.2009,宝塔7.9.4。
服务器中已有MySQL,可能不是通过宝塔安装的,而是手动安装的。用命令行可以正常进入MySQL查看和管理数据,说明已有的MySQL是正常的。在宝塔中点击数据库提示“未安装本地数据库,已隐藏无法使用的功能”,软件商店中已安装Nginx和PHP,从软件商店中安装phpMyAdmin 5.0.0提示“依赖以下软件,请先安装[mysql,nginx|apache|openlitespeed]”。
既然宝塔上装不了,就想手动安装,查到的文章有的是yum安装,有的是解压phpMyAdmin压缩包再配置Nginx的root目录,弄完都打不开phpMyAdmin页面,403或404。
后来看到个视频,他是先在宝塔的网站中添加PHP站点(域名假设是test.com,也可以是自定义的IP+端口),然后在这个站点的根目录(如/www/wwwroot/test.com)中解压phpMyAdmin压缩包,得到/www/wwwroot/test.com/phpMyAdmin-4.9.11-all-languages,然后访问test.com/phpMyAdmin-4.9.11-all-languages就能打开phpMyAdmin页面,或者IP:端口/phpMyAdmin-4.9.11-all-languages也能打开(要提前放行端口),安全起见我把phpMyAdmin-4.9.11-all-languages文件夹重命名成一个很长的随机字符串,这样别人即使知道域名或IP+端口,也不知道具体的路径,无法访问数据库。
如果报错phpmyadmin mysqli_real_connect(): (HY000/2002): No such file or directory,进入phpMyAdmin-4.9.11-all-languages文件夹,cp config.sample.inc.php config.inc.php,将config.inc.php中$cfg['Servers'][$i]['host']的值由'localhost'改成'127.0.0.1'。参考链接。
参考链接中还做了一个访问开关(如叫phpmyadmin.sh,要给可执行权限),需要通过phpMyAdmin访问数据库时,开启开关,不访问时关闭,关闭后即使知道访问地址也无法打开。原理就是修改当前站点自己的Nginx配置文件名(即子配置文件名),改完后服务器上的Nginx主配置没改,它还用旧名字去读取子配置文件,读取不到,所以打不开子网站(即新建的phpMyAdmin站点)。使用前将两处mv的路径改成自己的,然后将两处systemctl restart nginx都改成nginx -s reload,因为前者会重启Nginx,后者是重载配置但不重启。
#!/bin/bash
# author: yasin
function enable_phpmyadmin(){
mv /etc/nginx/conf.d/phpmyadmin.conf_bak /etc/nginx/conf.d/phpmyadmin.conf
# systemctl restart nginx
nginx -s reload
echo "enable phpmyadmin success."
}
function disable_phpmyadmin(){
mv /etc/nginx/conf.d/phpmyadmin.conf /etc/nginx/conf.d/phpmyadmin.conf_bak
# systemctl restart nginx
nginx -s reload
echo "disable phpmyadmin success."
}
case $1 in
enable)
enable_phpmyadmin;;
disable)
disable_phpmyadmin;;
*)
echo "Usage:`basename $0` {enable|disable}";;
esac
打开访问开关:./phpmyadmin.sh enable
关闭访问开关:./phpmyadmin.sh disable