phpMyAdmin 是 MySQL 的图形界面版管理软件,用户可通过图形界面轻松的控制 MySQL 数据库。本教程将详细讲解如何在服务器中安装 phpMySQL 管理软件及对它的安全配置。
如果你需要针对自己的工作流对数据库操作,定制开发,推荐一下卡拉云。卡拉云是新一代低代码开发工具,不仅可以完成 phpMyadmin 所有功能,还免安装部署,可一键接入包括 MySQL 在内的常见数据库及 API。无需繁琐的前端开发,只需要简单拖拽,即可快速搭建企业内部工具。数月的开发工作量,使用卡拉云后可缩减至数天,欢迎免费试用卡拉云。详情见本文文末。
先决条件
在跟随本教程学习前,你需要准备:
- 一台 Linux 服务器,我们将在这台服务器。
- 已经配置好 PHP 开发环境(Apache、MySQL、PHP)。如果还未配置,可按照《如何搭建 PHP 开发环境(Apache+PHP+MySQL)配置安装教程》教程进行部署。
第一步:安装 phpMyAdmin
登录你的 Linux 服务器,更新 apt
列表
sudo apt update
接着我们来安装phpmyadmin
软件包,除此之外,我们也根据官方文档还建议,在服务器上安装 PHP 扩展,以提高某些功能的性能。
如果你已经按照我们《如何搭建 PHP 开发环境(Apache+PHP+MySQL)配置安装教程》教程学习,那么其中几个模块已经安装,但还是建议安装以下这些扩展。
php-mbstring
: 用于管理非 ASCII 字符串并将字符串转换为不同编码的模块php-zip.zip
: 支持上传.zip
文件到phpMyAdminphp-gd
: 启用对GD 图形库的支持php-json
: 为 PHP 提供对 JSON 序列化的支持php-curl
: 允许 PHP 与使用不同协议的不同类型的服务器交互
运行这段代码,一篮子安装以上所有扩展:
sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl
选择 Y
继续安装
使用空格键选中apache2
,切记前面要有*
号显示才是选中,然后使用 Tab 键选择<ok>
继续。
使用dbconfig-common
建立数据库,选择 Yes
特别提醒:假设你睡是按照《如何搭建 PHP 开发环境(Apache+PHP+MySQL)配置安装教程》安装了 MySQL ,你可能已经打开了Validate_Password_plugin
认证插件。
这会导致安装 phpMyadmin 时触发以下错误:
要解决此问题,请选择abort
选项以停止安装过程。然后进入 MySQL:
sudo mysql
如果你的 root
用户是使用密码验证登录的话,可用这个命令登录:
mysql -u root -p
接着我们在 mysql> 里,禁用验证密码组件,仅仅是禁用,不是卸载,后面我们还会打开它。
UNINSTALL COMPONENT "file://component_validate_password";
执行成功之后,退出 MySQL:
exit
返回值:
mysql> UNINSTALL COMPONENT "file://component_validate_password";
Query OK, 0 rows affected (0.09 sec)
mysql> exit
然后我们继续安装phpmyadmin
:
sudo apt install phpmyadmin
安装 phpMyAdmin 成功后,我们再次进入 MySQL ,再次把刚刚关掉的验证密码组件打开:
sudo mysql
INSTALL COMPONENT "file://component_validate_password";
退出 MySQL:
exit
安装过程会将 phpMyAdmin Apache 配置文件添加到/etc/apache2/conf-enabled/
目录中,然后自动读取该文件。
要完成配置 Apache 和 PHP 与 phpMyAdmin 一起使用,我们可以启用mbstring
:
sudo phpenmod mbstring
之后,重新启动 Apache 更改配置:
sudo systemctl restart apache2
至此,phpMyAdmin 已经安装完成,接着我们要确保 phpMyAdmin 有 MySQL 数据库读写权限。

连接数据库后需要开发后台系统?
第 2 步:设置 phpMyAdmin 登录账户及权限
在安装 phpMyAdmin 时,安装脚本会自动创建用户名为phpmyadmin
的 MySQL 账号,这个账号可执行某些底层进程。它的密码就是上文中安装过程中你输入的密码。我们暂时不使用这个账号。我们使用 root 账号来登录 phpMyAdmin。
1.为 root 帐户配置密码访问
在 MySQL 5.7 或更高版本中,root 账号使用auth_socket
插件作为身份验证方式,而不是使用密码。在许多情况下它更安全和简便(不用输入长密码),但当外部程序访问 MySQL 时,有必须使用密码。
这时,我们要把auth_socket
登录方式切换成使用密码登录:
sudo mysql
接下来,使用以下命令检查每个 MySQL 用户帐户使用的身份验证方法:
SELECT user,authentication_string,plugin,host FROM mysql.user;
如上图所示,我们可以看到 root
账号实际使用auth_socket
插件进行了身份验证。要将root
帐户配置为使用密码进行身份验证,可使用ALTER USER
命令。password
请使用「大写字母+小写字母+数字+符号」的强密码。
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '6Ysce*j7';
特别提示:上面的ALTER USER
语句将root
账号认证方式改为caching_sha2_password
。
根据官方 MySQL 文档,caching_sha2_password
是 MySQL 的首选身份验证插件,因此它比早期版本中 mysql_native_password
使用更广泛。
但某些 PHP 版本可能与此认证方式不兼容,如果一会在连接 phpMyAdmin 时遇到错误,可将 root
账号身份验证方式改为mysql_native_password
:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '6Ysce*j7';
好,我们再次检查一下各账号的身份验证方式:
SELECT user,authentication_string,plugin,host FROM mysql.user;
从返回值可以看到,root 账号的身份认证方式已经改为caching_sha2_password
:
2.为 phpMyAdmin 配置一个专用账号
某些工作场景中,我们更适合给 phpMyAdmin 配置一个专属账号,我们先登录 MySQL:
sudo mysql
如果你已经根据上文调整了 root 的密码,可用以下代码登录:
mysql -u root -p6Ysce*j7
我们创建一个新用户,使用强密码:
CREATE USER 'kalacloud'@'localhost' IDENTIFIED WITH caching_sha2_password BY '6Ysce*j7';
特别提示:同样,根据你安装的 PHP 版本,你可以选择mysql_native_password
,而不是caching_sha2_password
作为账号的验证方式(取决于你的 PHP 是否支持caching_sha2_password
):
ALTER USER 'kalacloud'@'localhost' IDENTIFIED WITH mysql_native_password BY '6Ysce*j7';
然后,我们给kalacloud
足够的权限:
GRANT ALL PRIVILEGES ON *.* TO 'kalacloud'@'localhost' WITH GRANT OPTION;
之后,退出 MySQL:
exit
特别提示:经常有同学问「phpmyadmin用户名和密码在哪」,其实就是 MySQL 的账号。
现在,你可以通过你的服务器 IP 地址加上/phpmyadmin
来访问 phpmyadmin 了。
https://your_domain_or_IP/phpmyadmin
本教程在虚拟机上完成,所以浏览器中的 IP 地址是一个内网 IP。
特别提示:有关 phpmyadmin 访问时显示 404 错误
如果打开浏览器,网址没有输错,但显示 404 错误。说明在安装 phpmyadmin 时,你没有选中apache2
,切记显示*
号才是选中。
你可以使用以下代码重新选择:
sudo dpkg-reconfigure phpmyadmin
现在,我们使用 root 或刚刚创建的专属账号登录:
到这里,phpMyAdmin 已经可以使用了,接下来,我们来讲解如何加强系统安全,以避免被攻击。
第 3 步 - 保护你的 phpMyAdmin 实例
phpMyAdmin 使用非常广泛,这也导致它成为热门的攻击目标,所以我们应该格外小心。接下来,本教程将详细讲解如何使用 Apache 的内置.htaccess
身份验证和授权功能保护 phpMyAdmin
首先,我们先编辑 phpmyadmin.conf
配置文件:
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
在<Directory /usr/share/phpmyadmin>
下面添加,AllowOverride All
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php AllowOverride All
. . .
保存退出编辑器,然后重启启动apache2
,使配置生效:
sudo systemctl restart apache2
接着我们来创建一个.htaccess
文件
sudo nano /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
输入两次密码,生产并保存密码文件。
如果你还想再建一个用户,切记要去掉-c
,-c
是创建密码文件,如果文件存在,那么内容会被请看重写。
sudo htpasswd /etc/phpmyadmin/.htpasswd kalacloud
最后,重启 Apache 使.htaccess
身份验证生效:
sudo systemctl restart apache2
现在,当你访问 phpMyAdmin 目录时,系统会提示你输入刚刚配置的帐户名和密码:
https://domain_name_or_IP/phpmyadmin
现在我们给 phpMyAdmin 添加了多一层保护,可不要小看这一层保护,过滤掉非常多的安全隐患。
总结
现在我们已经完成 phpMyAdmin 的部署,phpMyAdmin 与本地 MySQL 软件非常类似,只能做较底层的数据库操作。对于「构建在数据库之上,做前端定制开发」的需求,并不适用。
这里推荐一下卡拉云,卡拉云是新一代低代码开发工具,免安装部署,可一键接入包括 MySQL 在内的常见数据库及 API。不仅可以完成 phpMyadmin 所有功能,还可根据自己的工作流,定制开发。无需繁琐的前端开发,只需要简单拖拽,即可快速搭建企业内部工具。数月的开发工作量,使用卡拉云后可缩减至数天,欢迎免费试用卡拉云。
卡拉云可一键接入常见的数据库及 API
卡拉云 - 新一代低代码开发工具
下图为使用卡拉云在 5 分钟内搭建的「优惠券发放核销」后台,仅需要简单拖拽即可快速生成前端组件,只要会写 SQL,便可搭建一套趁手的数据库工具。欢迎免费试用卡拉云。
如果你还有什么疑问,欢迎一起讨论。我的微信 HiJiangChuan。更多数据库相关教程可访问 卡拉云 查看。
有关 MySQL 教程,可继续拓展学习: