phpMyAdmin让用户可以通过Web界面与MySQL进行交互。在本教程中,我们将讨论如何安装和保护phpMyAdmin,以便您可以安全地使用它来管理Ubuntu 18.04系统上的数据库。
在开始使用本指南之前,您需要完成一些基本步骤。
首先,我们假设您的服务器是具有sudo
权限的非root用户并配置了ufw
的防火墙。我们还假设您已经在Ubuntu 18.04服务器上完成了LAMP(Linux,Apache,MySQL和PHP)安装,不会安装的用户可以参考腾讯云社区Ubuntu配置LAMP环境的安装教程。
最后,使用phpMyAdmin这样的软件时有一些重要的安全注意事项,因为它:
因为phpMyAdmin是一个广泛部署的PHP应用程序,经常被作为攻击目标,所以不应该通过普通的HTTP连接在远程系统上运行phpMyAdmin。
完成这些步骤后,您就可以开始使用本指南了。
首先,我们将从默认的Ubuntu存储库安装phpMyAdmin。
这是通过更新服务器的软件包索引,然后使用apt
打包系统下拉文件并将其安装在您的系统上来完成的:
$ sudo apt update
$ sudo apt install phpmyadmin php-mbstring php-gettext
警告:提示中的“Apache2”只是被高亮了,而没有被选中。如果您没有按下
SPACE
选择Apache,安装程序将不会在安装期间移动必要的文件。点击SPACE
,TAB
然后ENTER
选择Apache。
apache2
dbconfig-common
建立数据库,选择Yes
安装过程将phpMyAdmin Apache配置文件添加到/etc/apache2/conf-enabled/
目录中,并自动读取该文件。您需要做的唯一事情是启用mbstring
PHP扩展,您可以通过键入以下内容来执行:
$ sudo phpenmod mbstring
然后,重新启动Apache以便识别您的更改:
$ sudo systemctl restart apache2
phpMyAdmin现已安装并配置完毕。但是,在您登录并开始与MySQL数据库交互之前,您需要确保您的MySQL用户具有与程序交互所需的权限。
当您将phpMyAdmin安装到服务器上时,它会自动创建一个数据库用户phpmyadmin
,该用户会执行该程序的基础进程。不要使用您在安装期间设置的管理密码登录,而是建议您以root用户身份或专用于通过phpMyAdmin界面管理数据库的用户身份登录。
在运行MySQL 5.7(及更高版本)的Ubuntu系统中,MySQL的root用户设置为auth_socket
默认使用插件进行身份验证。在许多情况下,这保证了更高的安全性和可用性,但是当您需要允许外部程序(如phpMyAdmin)访问用户时,这会令过程变得复杂。
要以root用户身份登录phpMyAdmin,您需要将其身份验证方法切换为auth_socket
,mysql_native_password
。打开MySQL:
$ sudo mysql
接下来,使用以下命令检查每个MySQL用户帐户使用的身份验证方法:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
在此示例中,您可以看到root用户确实使用auth_socket
插件进行身份验证。要配置root帐户以使用密码进行身份验证,请运行以下ALTER USER
命令。请务必更改password
为您选择的强密码:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
然后,运行FLUSH PRIVILEGES
告诉服务器重新加载授权表并使您的新更改生效:
mysql> FLUSH PRIVILEGES;
再次检查每个用户使用的身份验证方法,以确认root用户不再使用该auth_socket
插件进行身份验证:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | mysql_native_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
您可以从此输出中看到root用户将使用密码进行身份验证。您现在可以使用您在此处为其设置的密码以root用户身份登录phpMyAdmin界面。
或者,使用专用用户连接到phpMyAdmin。为此,再次打开MySQL shell:
$ sudo mysql
注意:如果启用了密码身份验证,如上一节所述,则需要使用其他命令来访问MySQL shell。以下将使用常规用户权限运行您的MySQL客户端,并且您只能通过身份验证获得数据库中的管理员权限:
$ mysql -u root -p
创建一个新用户并设置一个复杂的密码:
mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
然后,为您的新用户授予适当的权限。例如,您可以使用以下命令向用户授予数据库中所有表的权限,以及添加,更改和删除用户权限的权限:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
然后,退出MySQL shell:
mysql> exit
您现在可以通过访问服务器的域名/phpmyadmin
或公共IP地址来访问Web界面,然后执行以下操作:
https://your_domain_or_IP/phpmyadmin
以root身份或使用刚刚配置的新用户名和密码登录界面。
登录时,您将看到:
既然您已经能够与phpMyAdmin进行连接和交互,那么剩下要做的就是强化您的系统安全性以保护其免受攻击者的攻击。
phpMyAdmin是攻击者的热门目标,你应该格外小心以防止未经授权的访问。最简单的方法之一是使用Apache的内置.htaccess身份验证和授权功能将网关放在整个应用程序的前面。
为此,您必须首先通过编辑Apache配置文件来启用.htaccess文件的覆盖和使用。
编辑已放置在Apache配置目录中的链接文件:
$ sudo nano /etc/apache2/conf-available/phpmyadmin.conf
在配置文件AllowOverride All
的<Directory/usr/share/phpmyadmin\>
部分中添加一个指令,如下所示:
/etc/apache2/conf-available/phpmyadmin.conf
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .
添加此行后,保存并关闭该文件,要实现您所做的更改,请重新启动Apache:
$ sudo systemctl restart apache2
现在您已启动了应用程序,您需要创建一个htaccess.
以实现某些安全性。
为了使其成功,必须在应用程序目录中创建该文件。您可以通过键入以下内容创建必要的文件并使用root权限在文本编辑器中打开它
$ sudo nano /usr/share/phpmyadmin/.htaccess
在此文件中,输入以下信息:
/usr/share/phpmyadmin/.htaccess
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
以下是每条线的含义:
AuthType Basic
:此行指定要实现的身份验证类型。此类型将使用密码文件实现身份验证。AuthName
:这将设置身份验证对话框的消息。您应该保持这种通用性,以便未经授权的用户不会获得有关受保护内容的任何信息。AuthUserFile
:这将设置用于身份验证的密码文件的位置。Require valid-user
:这指定为经过身份验证的用户授予对此资源的访问权限。这实际上阻止了未经授权的用户进入。完成后,保存并关闭文件。
您为密码文件选择的位置是/etc/phpmyadmin/.htpasswd
。您现在可以创建此文件并使用htpasswd
传递初始用户:
$ sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
系统将提示您为正在创建的用户选择并确认密码。然后,使用您输入的散列密码创建文件。
如果要输入其他用户,则需要去除-c标志并执行此操作,如下所示:
$ sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
现在,当您访问phpMyAdmin子目录时,系统将提示您输入刚刚配置的其他帐户名和密码:
https://domain_name_or_IP/phpmyadmin
进入Apache身份验证后,您将进入常规的phpMyAdmin身份验证页面以输入您的MySQL凭据。此设置添加了额外的安全层,因为phpMyAdmin过去曾遭受过漏洞攻击。
您现在应该已经配置了phpMyAdmin并准备好在您的Ubuntu 18.04服务器上使用。使用此界面,您可以轻松创建数据库,用户,表等。并执行常规操作,如删除和修改结构和数据。如果使用的CentOS系统安装phpMyAdmin,可以参考腾讯云的安装教程。
参考文献:《How To Install and Secure phpMyAdmin on Ubuntu 18.04》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。