本教程向您展示如何在Debian 10 Buster上使用Apache,MariaDB,PHP7.3(LAMP)安装phpMyAdmin。
步骤1:在Debian 10服务器上下载phpMyAdmin
phpMyAdmin未包含在Debian 10软件存储库中,因此我们必须手动下载该软件。转到phpMyAdmin下载页面检查最新的稳定版本,然后运行以下命令下载它。
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip
提示:你始终可以使用上面的URL格式下载最新的稳定版phpMyAdmin。只需用最新的版本号替换4.9.0.1.
然后提取出来。
sudo apt install unzip unzip phpMyAdmin-4.9.0.1-all-languages.zip
将phpMyadmin 4.9移动到/usr/share/
目录。
sudo mv phpMyAdmin-4.9.0.1-all-languages /usr/share/phpmyadmin
然后使web服务器用户(www-data
)作为此目录的所有者。
sudo chown -R www-data:www-data /usr/share/phpmyadmin
步骤2:为MariaDB数据库和用户创建phpMyAdmin
现在我们需要登录到MariaDB控制台,并为phpMyAdmin创建数据库和用户,默认情况下,Debian上的MaraiDB包使用unix_套接字来验证用户登录,这意味着你可以使用操作系统的用户名和密码登录到MariaDB控制台,可以运行以下命令登录而不提供MariaDB root密码。
sudo mysql -u root
接下来,使用以下SQL命令为phpMyAdmin创建一个新数据库,本教程将它命名为phpmyadmin
,可以使用你喜欢的数据库名称。
CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON phpmyadmin.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY 'your_preferred_password';
刷新权限表,并退出MariaDB控制台。
FLUSH PRIVILEGES;
EXIT;
步骤3:安装必需的和推荐的PHP模块,
运行以下命令安装phpMyAdmin需要或推荐的PHP模块。
sudo apt install php-imagick php-phpseclib php-php-gettext php7.3-common php7.3-mysql php7.3-gd php7.3-imap php7.3-json php7.3-curl php7.3-zip php7.3-xml php7.3-mbstring php7.3-bz2 php7.3-intl php7.3-gmp
然后重启Apache。
sudo systemctl restart apache2
步骤4:为phpMyAdmin创建Apache Configuration
如果要从子目录访问phpMyAdmin web interface,请使用以下命令创建一个配置片段。
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
将以下文本粘贴到文件中。
# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
<IfModule mod_php5.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch".+.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
<IfModule mod_php.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch".+.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
</Directory>
# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>
保存,并管理文件,然后启用此配置片段。
sudo a2enconf phpmyadmin.conf
我们还需要创建phpMyAdmin temp文件夹。
sudo mkdir -p /var/lib/phpmyadmin/tmp
sudo chown www-data:www-data /var/lib/phpmyadmin/tmp
重新加载Apache以便让更改生效。
sudo systemctl reload apache2
现在你可以访问phpMyAdmin web界面
your-server-ip/phpmyadmin
如果phpMyAdmin安装在你的本地Debian计算机上,那么通过在浏览器地址栏中输入以下文本来访问phpMyAdmin web界面。
localhost/phpmyadmin
如果连接被拒绝或无法完成,就可能存在阻止HTTP请求的防火墙。如果使用的是iptables firewall,那么你需要运行以下命令来打开TCP端口80和443.
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
如果使用UFW firewall,就运行此命令打开TCP端口80和443.
sudo ufw allow http
sudo ufw allow https
步骤5:从子域名访问phpMyAdmin
有时,你需要使用子域名来访问phpMyAdmin web界面,这样,你就可以启用HTTPS来加密通信。
首先,我们需要为phpMyAdmin创建Apache虚拟主机,现有的phpMyAdmin配置片段可以用作模板,把它复制到新文件。
sudo cp /etc/apache2/conf-enabled/phpmyadmin.conf /etc/apache2/sites-available/phpmyadmin.conf
然后使用命令行文本编辑器编辑新文件,比如Nano。
sudo nano /etc/apache2/sites-available/phpmyadmin.conf
在该文件的开头添加以下行,将pma.example.com替换为phpMyAdmin的首选子域名,不要忘记为此子域名创建DNS记录。
<VirtualHost *:80>
ServerName pma.example.com
DocumentRoot /usr/share/phpmyadmin
ErrorLog ${APACHE_LOG_DIR}/pma.error.log
CustomLog ${APACHE_LOG_DIR}/pma.access.log combined
在这个文件的末尾添加以下行。
</VirtualHost>
保存,并管理文件,要在Nano text编辑器中保存文件,请按Ctrl+O
,然后按Enter确认,要退出,请按Ctrl+X
,然后启用此虚拟主机。
sudo a2ensite phpmyadmin.conf
重新加载Apache web服务器以便让更改生效。
sudo systemctl reload apache2
现在你应该能够通过phpMyAdmin web界面
pma.example.com
在登录表单中输入用户凭据之前,启用HTTPS。
步骤6:使用Apache在phpMyAdmin上启用HTTPS
为了保护phpMyadmin web界面,我们可以安装一个免费的let's Encrypt TLS证书,运行以下命令从Debian 10软件存储库安装let's Encrypt客户端(证书机器人)。
sudo apt install certbot python3-certbot-apache
Python3-certbot-apache
是Certbot的Apache插件,现在运行以下命令获取,并安装TLS证书。
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email [email protected]
说明:
步骤7:运行phpMyAdmin设置脚本
在浏览器地址栏中输入以下内容。
your-server-ip/phpmyadmin/setup
或者
pma.example.com/setup
单击New Server
按钮配置服务器。
然后单击Apply
按钮。
接下来,单击Display按钮以显示配置文件。
在/usr/share/phpmyadmin/
目录中,创建config.inc.php文件。
sudo nano /usr/share/phpmyadmin/config.inc.php
将config.inc.php
的内容从phpMyAdmin设置页面复制,并粘贴到 /usr/share/phpmyadmin/config.inc.php
文件。
步骤8:phpMyAdmin登录错误疑难解答
现在如果尝试使用phpMyAdmin MariaDB root帐户登录,看到以下错误。
#1698 - Access denied for user 'root '@'localhost'
和
mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost'
如果使用用户phpmyadmin
登录,将看不到上面的错误,但是,用户phpmyadmin
只能用于管理phpmyadmin
数据库,错误的原因在于,默认情况下MariDB root用户通过unix_socket插件进行身份验证,而不是使用mysql_native_password
插件,为了解决这个问题,我们可以创建另一个admin用户,并向新的admin用户授予所有权限。
从MariaDB登录到命令行服务器。
sudo mysql -u root
使用密码验证创建管理员用户。
create user [email protected] identified by 'your-preferred-password';
授予所有数据库的所有权限。
grant all privileges on *.* to [email protected] with grant option;
刷新权限,并退出;
FLUSH PRIVILEGES;
EXIT;
现在你可以使用phpMyAmin帐户登录到admin
,并管理所有数据库。
步骤9:设置phpMyAdmin配置存储
现在在phpMyAdmin控制面板中,可以看到一条警告消息。
The phpMyAdmin configuration storage is not completely configured, some extended features have been deactivated. Find out why.
Or alternately go to 'Operations' tab of any database to set it up there.
点击查找原因链接,然后单击Create链接在phpmyadmin
数据库中创建表。
步骤10:限制对/setup目录的访问
为了限制对/setup目录的访问,我们可以使用Apache web服务器启用基本密码认证,运行以下命令为用户admin
设置密码,/etc/apache2/htpasswd
文件用于存储用户名和密码。
sudo htpasswd -c /etc/apache2/htpasswd admin
然后编辑phpMyAdmin的Apache配置文件
sudo nano /etc/apache2/sites-available/phpmyadmin-le-ssl.conf
或者
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName"phpMyAdmin Setup"
AuthUserFile /etc/apache2/htpasswd
</IfModule>
Require valid-user
</IfModule>
</Directory>
保存,并管理文件,然后重新加载Apache以便让更改生效。
sudo systemctl reload apache2
如果再次访问phpMyAdmin设置脚本,将要求你输入用户名和密码。