教程所用环境:CentOS 7/PHP 7.4/Negix 18.0/MariaDB 10.5/WordPress 5.9/BT Panel 7.9/phpMyAdimn 5.1
1. 为什么要手动安装
本人使用的是腾讯云所提供的WordPress镜像,这个镜像中,是默认携带了宝塔面板的。如图1所示。
因此,我们可以选择从宝塔面板中的应用商店来一键自动安装phpMyAdmin。但是,实际上事实并没有我们想象的那么美好。
本人在安装好这个镜像后,将WordPress升级到了5.9,并且宝塔面板也升级到了7.9。随后使用宝塔面板安装phpMyAdmin后,就会发现,PHP服务离奇的停止了运行,如图2所示。
同时,这时在浏览器上输入http://ip:888,会显示”502 bad gateway“错误,无法正常使用,如图3所示。且按照网上所说的更改phpMyAdmin中的PHP版本设置后依然无法正常访问。
在上网查询各种解决方法后未果后,本人出于好奇,手贱的重启了一次服务器。结果发现phpMyAdmin仍然无法正常使用,但是PHP服务正常运行。同时MySQL服务停止运行,并且无法正常启动,如图4所示。由于本人对Linux数据库运维等并不熟悉,因此目前尚不知道原因。
可见,目前宝塔面板安装phpMyAdmin后可能会出现一些问题,但是手动安装就不会有这样的问题产生。因此在重置服务器后本人选择手动安装phpMyAdmin。
2. 安装方法
2.1 下载并解压phpMyAdmin
首先前往phpMyAdmin官方网站下载源码包,建议下载tar.gz格式的源码包,并使用宝塔面板、FTP协议或者MobaXterm软件上传到服务器中。或者直接使用Linux命令下载。
转到下载目录:
cd /usr/local/src
使用wet命令进行下载:
wget https://files.phpmyadmin.net/phpMyAdmin/5.1.3/phpMyAdmin-5.1.3-all-languages.tar.gz
解压文件到当前目录:
tar zxvf phpMyAdmin-5.1.3-all-languages.tar.gz
2.2 将phpMyAdmin移动到网站目录下
在腾讯云ESC自带的WordPress镜像中,已经默认为phpMyAdmin准备好了一个安装目录,具体可以通过下面的方法来查看:
(1). 首先登录腾讯云服务器控制台,转到应用管理,上面会显示Negix配置文件的默认位置,如图5。
输入下面的命令,即可查看详细的Negix配置:
vim /www/server/nginx/conf/nginx.conf
找到有着这样内容的几行(输入:q
退出vim):
server {
listen 888;
root /yourdirectory/phpmyadmin;
其中,”root“后面的目录,就是该镜像为phpMyAdmin准备的默认安装目录。
输入下面的命令,将解压后的文件移动到默认的目录下。(如果你使用的不是腾讯云服务器加上该镜像,而是任意一台其他的服务器,那么你可以自行创建一个安装目录,并将phpMyAdmin移动到这个目录下,并在最后一步的解析时将root后的路径设置成这个你自己创建的安装目录即可)
mv phpMyAdmin-5.1.3-all-languages /yourdirectory/phpmyadmin
至此,phpMyAdmin安装成功
3. phpMyAdmin配置方法[1]
首先进入到你自己的phpMyAdmin的安装目录下,并转到 ./libraries
文件夹下:
cd /yourdirectory/phpmyadmin/libraries
编辑config.default.php
文件:
vim config.default.php
修改如下几处(数据库用户名和密码可以用腾讯云应用管理处提供的命令来查询):
/**
* MySQL hostname or IP address
*
* @global string $cfg['Servers'][$i]['host']
*/
$cfg['Servers'][$i]['host'] = '127.0.0.1';
/**
* MySQL user
*
* @global string $cfg['Servers'][$i]['user']
*/
$cfg['Servers'][$i]['user'] = '你的数据库用户名';
/**
* MySQL password (only needed with 'config' auth_type)
*
* @global string $cfg['Servers'][$i]['password']
*/
$cfg['Servers'][$i]['password'] = '你的数据库密码';
ESC,:wq
保存,配置完成。
4. 配置Negix解析phpMyAdmin[2]
完成上一步后,此时在浏览器中输入http://ip:888,还是会显示502错误。原因是腾讯云镜像虽然给我们准备好了一个推荐的安装目录,但是并没有帮我们做好解析工作,因此Negix中的默认解析配置还存在问题,需要我们自己重新配置解析。
重新打开Negix配置文件,找到上面提到的那个server,将这个server删掉,并替换成以下内容(如果你使用的不是腾讯云服务器加上该镜像,那么只需要将这个配置中root后面的目录换成你自己创建的安装目录即可):
server {
listen 888; # 如果你不想使用888这个端口访问phpMyAdmin,请将其改为其他端口,如12345
root /yourdirectory/phpmyadmin; # 这里写你的phpMyAdmin的根目录
index index.html index.php;
location / {
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
重启Negix
systemctl restart nginx
浏览器访问http://ip:888,发现可以正常访问,如图5(登录用户名和密码即为MySQL数据库的用户名和密码)。
5. 其他的一些问题
(1). 登陆后报错:”缺少变量 $cfg[‘TempDir’] (./tmp/)无法访问,phpMyAdmin无法缓存模板文件,所以会运行缓慢“,如图6。
解决方法[3]:进入phpMyAdmin的安装目录,新建tmp文件夹即可。
cd /yourdirectory/phpmyadmin
mkdir tmp
chmod 777 tmp
关闭页面后再次打开,问题解决。
(2). 登录后报错:”配置文件现在需要一个短语密码。”,如图7。
解决方法[4]:打开phpMyAdmin下的配置文件(/你的phpMyAdmin安装目录/libraries/config.default.php),将如下内容进行修改:
/**
* The 'cookie' auth_type uses AES algorithm to encrypt the password. If
* at least one server configuration uses 'cookie' auth_type, enter here a
* pass phrase that will be used by AES. The maximum length seems to be 46
* characters.
*
* @global string $cfg['blowfish_secret']
*/
$cfg['blowfish_secret'] = '你设置的密码,最好有32位,不然还会报错说密码长度太短';
关闭页面后再次打开,问题解决。
(3). “phpMyAdmin 高级功能尚未完全设置,部分功能未激活”,如图8。
解决方法[5]:
首先找到 /你的phpMyAdmin安装目录/sql/create_tables.sql 文件,并想办法把它下载到你的电脑上(可以用宝塔面板)。
浏览器访问http://ip:888,登录phpMyAdmin,选择导入,并选择刚才下载下来的create_tables.sql文件,如图9。
导入完成后的界面如图10所示,可以看出右侧多了一个叫做”phpmyadmin”的数据库。
打开phpMyAdmin下的配置文件(/你的phpMyAdmin安装目录/libraries/config.default.php),找到下列内容并修改:
/**
* Database used for Relation, Bookmark and PDF Features
* (see sql/create_tables.sql)
* - leave blank for no support
* SUGGESTED: 'phpmyadmin'
*
* @global string $cfg['Servers'][$i]['pmadb']
*/
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
/**
* Bookmark table
* - leave blank for no bookmark support
* SUGGESTED: 'pma__bookmark'
*
* @global string $cfg['Servers'][$i]['bookmarktable']
*/
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
/**
* table to describe the relation between links (see doc)
* - leave blank for no relation-links support
* SUGGESTED: 'pma__relation'
*
* @global string $cfg['Servers'][$i]['relation']
*/
$cfg['Servers'][$i]['relation'] = 'pma__relation';
/**
* table to describe the display fields
* - leave blank for no display fields support
* SUGGESTED: 'pma__table_info'
*
* @global string $cfg['Servers'][$i]['table_info']
*/
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
/**
* table to describe the tables position for the designer and PDF schema
* - leave blank for no PDF schema support
* SUGGESTED: 'pma__table_coords'
*
* @global string $cfg['Servers'][$i]['table_coords']
*/
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
/**
* table to describe pages of relationpdf
* - leave blank if you don't want to use this
* SUGGESTED: 'pma__pdf_pages'
*
* @global string $cfg['Servers'][$i]['pdf_pages']
*/
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
/**
* table to store column information
* - leave blank for no column comments/mime types
* SUGGESTED: 'pma__column_info'
*
* @global string $cfg['Servers'][$i]['column_info']
*/
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
/**
* table to store SQL history
* - leave blank for no SQL query history
* SUGGESTED: 'pma__history'
*
* @global string $cfg['Servers'][$i]['history']
*/
$cfg['Servers'][$i]['history'] = 'pma__history';
/**
* table to store recently used tables
* - leave blank for no "persistent" recently used tables
* SUGGESTED: 'pma__recent'
*/
$cfg['Servers'][$i]['recent'] = 'pma__recent';
/**
* table to store favorite tables
* - leave blank for no favorite tables
* SUGGESTED: 'pma__favorite'
*/
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
/**
* table to store UI preferences for tables
* - leave blank for no "persistent" UI preferences
* SUGGESTED: 'pma__table_uiprefs'
*/
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
/**
* table to store SQL tracking
* - leave blank for no SQL tracking
* SUGGESTED: 'pma__tracking'
*
* @global string $cfg['Servers'][$i]['tracking']
*/
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
/**
* table to store user preferences
* - leave blank to disable server storage
* SUGGESTED: 'pma__userconfig'
*
* @global string $cfg['Servers'][$i]['userconfig']
*/
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
/**
* table to store users and their assignment to user groups
* - leave blank to disable configurable menus feature
* SUGGESTED: 'pma__users'
*
* @global string $cfg['Servers'][$i]['users']
*/
$cfg['Servers'][$i]['users'] = 'pma__users';
/**
* table to store allowed menu items for each user group
* - leave blank to disable configurable menus feature
* SUGGESTED: 'pma__usergroups'
*
* @global string $cfg['Servers'][$i]['usergroups']
*/
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
/**
* table to store information about item hidden from navigation tree
* - leave blank to disable hide/show navigation items feature
* SUGGESTED: 'pma__navigationhiding'
*
* @global string $cfg['Servers'][$i]['navigationhiding']
*/
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
/**
* table to store information about saved searches from query-by-example on a db
* - leave blank to disable saved searches feature
* SUGGESTED: 'pma__savedsearches'
*
* @global string $cfg['Servers'][$i]['savedsearches']
*/
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
/**
* table to store central list of columns per database
* - leave blank to disable central list of columns feature
* SUGGESTED: 'pma__central_columns'
*
* @global string $cfg['Servers'][$i]['central_columns']
*/
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
/**
* table to store designer settings
* - leave blank to disable the storage of designer settings
* SUGGESTED: 'pma__designer_settings'
*
* @global string $cfg['Servers'][$i]['designer_settings']
*/
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
/**
* table to store export templates
* - leave blank to disable saved searches feature
* SUGGESTED: 'pma__export_templates'
*
* @global string $cfg['Servers'][$i]['export_templates']
*/
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
关闭页面后再次打开,问题解决。
6. 配置phpMyAdmin使用https和域名访问。
想要使用域名和https来访问phpMyAdmin,只需要将Negix的配置修改一下即可[6]。下面贴上一个示例配置,大家可以参照此进行修改:
server {
listen 888 ssl; # 如果你不想使用888这个端口访问phpMyAdmin,请将其改为其他端口,如12345
server_tokens off;
keepalive_timeout 5;
root /yourdirectory/phpmyadmin; # 这里写你的phpMyAdmin的根目录
index index.php index.html;
server_name www.yourdomain.com; # 这里写你的域名
ssl_certificate yourSSLcertificate.crt; # 这里写证书文件名称
ssl_certificate_key yourSSLcertificate.key; # 这里写私钥文件名称
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
这样配置完成后,在浏览器中输入https://www.yourdomain.com:888/
就可以访问你的phpMyAdmin页面了。
不建议对公网开放数据库功能
好的,多谢提醒。我这篇文章中说的方法仅作教程用,实际并未开放。