如何在Ubuntu 18.04上安装phpMyAdmin

简介

MySQL是最流行的数据库管理系统之一,在Web应用方面有非常出色的表现,但是MySQL却需要以命令行的方式与系统进行交互,这让很多用惯了视窗操作方式的用户很难适应。

安装phpMyAdmin
安装phpMyAdmin

不过我们可以通过安装phpMyAdmin来实现MySQL的Web化控制和操作,phpMyAdmin是基于web的MySQL数据库管理工具,通过PhpMyAdmin 可以完全对数据库进行操作,例如建立、复制和删除数据等等。在本文中,我们将介绍如何在Ubuntu 18.04系统上安装和配置phpMyAdmin。

准备工作

开始之前,我们需要拥有sudo权限的非root用户,并且在系统上完成了LAMP(Linux,Apache,MySQL和PHP)的安装。

因为phpMyAdmin直接使用MySQL的账户,并对最核心的数据库和数据进行操作。因此,我们建议不要通过HTTP直接连接phpmyadmin,而是要通过HTTPS来连接phpmyadmin。

第1步-安装phpMyAdmin

首先,我们将从默认的Ubuntu软件仓库中安装phpMyAdmin。

更新服务器的软件包索引,并安装phpmyadmin及依赖包:

sudo apt update
sudo apt install phpmyadmin php-mbstring php-gettext

 选择apache2并回车确认,接下来根据提示进行操作

如何在Ubuntu 18.04上安装phpMyAdmin
选择apache2

启用mbstring:

sudo phpenmod mbstring

重启Apache2:

sudo systemctl restart apache2

现在,PhpMyadmin就已经完成安装了。

第2步-配置身份验证方式和权限

将phpMyAdmin安装到服务器的时候,它会自动创建一个名为的phpmyadmin数据库用户,该用户可执行该程序的某些基础进程。我们可以使用MySQL的root用户,或者创建的用于管理数据库的其他用户来登录PhpMyadmin。

为MySQL的root账户配置密码

默认情况下,在运行MySQL 5.7或更高版本的Ubuntu系统中,MySQL的root用户被设置为使用auth_socket插件登录,而不是使用密码进行身份登录。为了以MySQL的root用户登录phpmyadmin,我们需要把验证方式从auth_socket切换到mysql_native_password。

执行以下命令:

sudo mysql

接下来,使用以下命令来检查每个MySQL帐户的验证方式:

SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| 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 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

然后,运行FLUSH PRIVILEGES使更改生效:

FLUSH PRIVILEGES;

再次检查每个用户使用的身份验证方式,我们看到root用户的验证方式已经改为密码验证:

SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| 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用户以及刚才设置的密码来登录phpMyAdmin了。

创建MySQL账户

有些时候,为了便于管理,我们会单独创建一个管理账户。

执行下面的命令登录MySQL:

sudo mysql -u root -p

创建一个用户名为“niuqi”的用户,并为这个用户设置一个密码:

CREATE USER 'niuqi'@'localhost' IDENTIFIED BY 'password';

为这个用户授予操作所有数据库的权利:

GRANT ALL PRIVILEGES ON *.* TO 'niuqi'@'localhost' WITH GRANT OPTION;

之后,退出MySQL:

exit

现在,我们可以通过访问服务器的域名或公共IP地址加/phpmyadmin,来访问phpmyadmin了:

http://your_domain_or_IP/phpmyadmin
访问phpmyadmin

root用户或刚创建的新用登录phpmyadmin:

登录phpmyadmin

步骤3 —phpMyAdmin安全配置

phpMyAdmin的重要性不需要再次强调了,为了保障只有特定的用户可以登录phpmyadmin,我们将对其进行一些安全的配置。

编辑Apache配置文件来启用重写。

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

在配置文件的<Directory /usr/share/phpmyadmin>部分添加AllowOverride All的指令,如下所示:/etc/apache2/conf-available/phpmyadmin.conf

<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All
    . . .

添加后,保存并关闭文件。

重新启动Apache使更改生效:

sudo systemctl restart apache2

在phpmyadmin的根目录下,创建一个.htaccess文件:

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。现在,我们可以创建此密码文件,并使用下面的命令在密码文件中增加一个初始用户:

sudo htpasswd -c /etc/phpmyadmin/.htpasswd username

系统将提示为该用户创建一个密码,默认采用MD5加密方式。

如果想要创建一个新的用户,我们可以使用下面的命令:

sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

现在,当访问phpMyAdmin子目录时,系统将提示输入刚刚配置的用户名和密码:

https://domain_name_or_IP/phpmyadmin
phpmyadmin登录验证

验证成功后,将跳转到常规的phpMyAdmin登录页面,就可以使用我们的MySQL的账号和密码登录并管理MySQL了。

结论

现在,我们已经成功的安装了phpmyadmin,并可以通过Web页面来操作和控制我们的数据库了。

原创文章,作者:牛奇网,如若转载,请注明出处:https://www.niuqi360.com/lamp-config/nstall-secure-phpmyadmin-ubuntu1804/

发表评论

登录后才能评论