警告在先!

有参考本文的朋友请注意:开源世界的一大特点就是软件的版本、路径、名称等等随着系统版本的不同升级可能会不断变化再变化;因此,请务必看清本人的安装测试环境是否与你完全一致还是部分一致;否则,盲目照搬可能导致你走不必要的弯路!

本文安装环境

  • CentOS Linux release 7.6.1810 (Core) 
  • MYSQL 5.7社团版
  • nginx 1.18.0
  • PHP 7.1.33

需求

安装一个MySQL图形化管理工具,方便基于本地(普通win7环境)远程管理服务器上的MySQL。

分析来分析去,最终选择安装phpMyAdmin,这个也是使用Web方式管理远程MySQL的最典型的选择方案。

安装phpMyAdmin步骤、问题及解决办法

【说明】下面的操作假设“本文安装环境”处对应软件部分已经顺利安装完成。

安装phpMyAdmin过程中前半部分主要参考了文后参考资源1。到该文中【添加Nginx配置】这一步前完全与文中所述一样。从其他众多参考文章来看,原引文中前面这几步也没有什么大问题。

【提示】没有vim工具的,使用vi代替。另外,参考资源1中路径/etc/nginx/cond.d写错了,最后部分应该是conf.d!

但是,在【添加Nginx配置】这一步,许多网文中都没有提到!!!而且,即使提到的也感觉比较乱。总结来看,这个配置主要有如下功能:

  • 在nginx成功安装的前提下,确定phpMyAdmin的启动路径(放到nginx启动路径的下面作为其一个子目录操作!)。

【注意】在我的机器环境下,nginx对应的Web路径在/usr/share/nginx/html,而不是如很多文章中提到的/usr/local/nginx/html位置!于是phpMyAdmin的位置放在/usr/share/nginx/html/phpMyAdmin处正好与引文1中对应。显然,引文1中,“root /yasin/phpMyAdmin;”对应路径/yasin/phpMyAdmin一般是错误的(原作者机器上可能是这样的路径),需要根据你的机器的实际路径进行修改才行。

  • 确定phpMyAdmin的启动端口

【注意】我的操作中,使用了8088这个端口。但是,一开始这个端口是无法使用的。于是问题集中在“nginx配置端口”的问题上。这方面解决方案主要归纳于引文4。但是,根据引文4中操作也遇到问题:在我修改/etc/selinux/config 文件,即将将SELINUX=enforcing改为SELINUX=disabled后,并运行source命令后,再重新启动nginx,还是出现权限不够错误。此时,我运行命令getenforce ,得到的selinux 状态为Permissive。也就是说,source命令没有起作用。后来再次搜索网络(原谅参考文章忘记了),在修改上面 /etc/selinux/config 文件内容,即修改成如下:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

 在保存文件后,在命令行下运行reboot命令重新启动系统,上面文件修改才真正起作用。此时,再次运行命令getenforce ,得到的selinux 状态为Disabled。到此,使用listen命令设置phpMyAdmin的启动端口才最终起作用。

下面我贴出我的/etc/nginx/conf.d/phpmyadmin.conf完整内容,供参考(再次强调不可盲目照搬,应尽量做到理解之后再用):

server {
 listen 8088;
 server_name localhost;
 access_log /var/log/nginx/phpmyadmin-access.log main;

 location / {
  root /usr/share/nginx/html/phpMyAdmin;

  index index.php index.html;
 }

 location ~ \.php$ {
  root /usr/share/nginx/html/phpMyAdmin;
  fastcgi_pass  127.0.0.1:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include fastcgi_params;
 }

 location ~ /\.ht {
  deny all;
 }

}

  

期间先遇到404、502、403等不少Web错误,仅仅重新启动nginx就运行了不下50次(使用命令systemctl restart nginx)!原因是多方面的:(1)本来就不太熟悉Linux常用命令及使用环境;(2)开源环境下问题解决往往一查就是一串相关软件连带修改问题,而往往其中的好多部分因时间等原因又不好彻底弄清,这也是导致问题反复得不到解决的一大原因。

最后,终于初步成功地实现了本文需求目标:成功地使用Web方式操作phpMyAdmin来管理远程上的MySQL。结合本文上面的配置,在我的浏览器中启动远程主机上phpMyAdmin的方式如下:

http://我的远程主机的IP:8080

即可打开如图所示的phpMyAdmin登录界面,这里的用户名与密码其实就是对应于引文1中修改config.default.php中的登录mysql的用户名与密码。

CentOS7+Nginx下安装phpMyAdmin历险笔记_Nginx

 

 

登录成功后,可以看到期望已久的phpMyAdmin管理界面如下:

CentOS7+Nginx下安装phpMyAdmin历险笔记_Nginx_02

 

重要参考

  1. https://blog.csdn.net/shangyexin/article/details/102721438?utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control
  2. https://www.cnblogs.com/kazihuo/p/9326581.html
  3. centos7 yum快速安装php7.1
  4. nginx配置多个端口监听(以及Permission denied问题处理)