简介
MySQL是最流行的数据库管理系统之一,在Web应用方面有非常出色的表现,但是MySQL却需要以命令行的方式与系统进行交互,这让很多用惯了视窗操作方式的用户很难适应。
不过我们可以通过安装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并回车确认,接下来根据提示进行操作
。
启用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
以root用户或刚创建的新用登录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登录页面,就可以使用我们的MySQL的账号和密码登录并管理MySQL了。
结论
现在,我们已经成功的安装了phpmyadmin,并可以通过Web页面来操作和控制我们的数据库了。
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/nstall-secure-phpmyadmin-ubuntu1804/