如何在 Debian 9 上使用 Apache 安装和保护 phpMyAdmin

2023-11-11

phpMyAdmin 是一个免费、开源的基于 PHP 的应用程序,旨在通过基于 Web 的界面简化 MySQL 和 MariaDB 服务器的管理。

phpMyAdmin 允许您管理 MySQL 数据库、用户帐户和权限、执行 SQL 语句、以各种数据格式导入和导出数据等等。

本教程描述了在 Debian 9 上使用 Apache Web 服务器安装和保护 phpMyAdmin 所需的步骤。

先决条件#

在继续本教程之前,请确保您已满足以下要求:

  • Have 安装在 Debian 服务器上的 LAMP(Linux、Apache、MySQL 和 PHP) .
  • 登录身份为具有 sudo 权限的用户 .

尽管可选,但建议通过 HTTPS 访问您的 phpMyAdmin 安装。如果您的域名尚未受到 SSL 保护,您可以按照本指南来保护您的域名Apache 与 Debian 9 上的 Let’s Encrypt .

安装 phpMyAdmin#

执行以下步骤在 Debian 9 上安装 phpMyAdmin:

  1. 更新软件包索引并将系统软件包升级到最新版本:

    sudo apt update && sudo apt upgrade
  2. 通过键入以下内容从默认 Debian 存储库安装 phpMyAdmin 软件包:

    sudo apt install phpmyadmin

    安装程序将要求您选择应自动配置为运行 phpMyAdmin 的 Web 服务器,通过按选择 apacheSpace进而Enter.

    接下来,系统会询问您是否使用dbconfig-common要设置数据库,请选择Yes并击中Enter.

    输入phpMyAdmin注册数据库的密码,选择OK并按Enter.

    确认密码,选择OK并按Enter.

  3. 安装过程完成后,重新启动 Apache 以使更改生效:

    sudo systemctl restart apache2

创建管理 MySQL 用户#

在运行 MariaDB 10.1(及更高版本)的 Debian 系统中,root 用户设置为使用auth_socket默认身份验证方法。

The auth_socket插件对通过 Unix 套接字文件从本地主机连接的用户进行身份验证。这意味着您无法通过提供密码来进行 root 身份验证。

我们将创建一个新的 MySQL 管理用户,而不是更改 MySQL 用户 root 的身份验证方法。该用户将具有与 root 用户相同的权限,并且将被设置为使用mysql_native_password身份验证方法。

我们将使用此用户登录 phpMyAdmin 仪表板并在 MySQL 或 MariaDB 服务器上执行管理任务。

首先以 root 用户身份登录 MySQL 服务器:

sudo mysql

从 MySQL shell 中执行以下命令,这将创建一个新的管理用户并授予适当的权限:

CREATE USER 'padmin'@'localhost' IDENTIFIED BY 'super-strong-password';GRANT ALL PRIVILEGES ON *.* TO 'padmin'@'localhost' WITH GRANT OPTION;
我们命名为管理用户padmin。您可以使用任何您喜欢的名称,但请务必设置一个强密码。

访问 phpMyAdmin#

要访问 phpMyAdmin 界面,请打开您喜欢的浏览器并输入服务器的域名或公共 IP 地址,然后输入/phpmyadmin:

https://your_domain_or_ip_address/phpmyadmin

输入您之前创建的管理用户登录凭据,然后单击Go.

登录后,您将看到 phpMyAdmin 仪表板,如下所示:

保护 phpMyAdmin#

为了添加额外的安全层,我们将通过设置基本身份验证来对 phpMyAdmin 目录进行密码保护。

首先,我们将使用以下命令为用户创建一个密码文件htpasswdApache 软件包附带的工具。我们将存储.htpasswd文件输入/etc/phpmyadmin目录:

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

在此示例中,我们将创建一个名为padmin。您可以选择任何用户名,不必与管理 MySQL 用户相同。

上面的命令将提示您输入并确认用户的密码。

New password:
Re-type new password:
Adding password for user padmin

如果您想添加其他用户,可以使用相同的命令,而无需-c flag:

sudo htpasswd /etc/phpmyadmin/.htpasswd padmin2

下一步是配置 Apache 以密码保护 phpMyAdmin 目录并使用.htpasswd file.

为此,请打开phpmyadmin.conf在 phpMyAdmin 安装过程中自动创建的文件:

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

并编辑/插入以下以黄色突出显示的行:

/etc/apache2/conf-available/phpmyadmin.conf
<Directory /usr/share/phpmyadmin>
    Options  +FollowSymLinks +Multiviews +Indexes  # edit this line
    DirectoryIndex index.php

    AllowOverride None
    AuthType basic
    AuthName "Authentication Required"
    AuthUserFile /etc/phpmyadmin/.htpasswd
    Require valid-user

    <IfModule mod_php5.c>
    ...

保存并关闭文件并重新启动 Apache 以使更改生效:

sudo systemctl restart apache2

现在,当访问 phpMyAdmin 时,系统将提示您输入之前创建的用户的登录凭据:

https://your_domain_or_ip_address/phpmyadmin

输入基本身份验证后,您将进入 phpMyAdmin 登录页面,您需要在其中输入 MySQL 管理用户登录凭据。

改变一下也是一个好主意/phpmyadmin更独特、更安全的别名。

结论#

恭喜,您已经在 Debian 9 服务器上成功安装了 phpMyAdmin。您现在可以开始创建 MySQL 数据库、用户和表并执行各种MySQL查询和操作。

如果您有疑问,请随时在下面发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Debian 9 上使用 Apache 安装和保护 phpMyAdmin 的相关文章

  • mysql查询先慢后快

    我有 2 个 myISAM 表 分别称为 tests 和 completed tests 一个有 170 个条目 另一个有 118k 条目 当我运行此查询时 SELECT ct archive ct status ct score ct u
  • 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解使用 nea 的正确语法[重复]

    这个问题在这里已经有答案了 我收到这个错误 ERROR ERRORINSERT INTO new comp reg phno fullname address dept desc VALUES 您的 SQL 语法有错误 检查与您的 Mari
  • 将 php filter_var 与 mysql_real_escape_string 结合使用

    我想首先说 我意识到 PDO mysqli 是新标准 并且已被 SO 广泛覆盖 然而 在这种特殊情况下 我没有时间在启动客户端站点之前将所有查询转换为 PDO 以下内容已在网站上的大多数查询中使用 我可以补充一下 这不是我所使用的 user
  • 是否有工具可以将 Neo4j 图转储为 Cypher 并从 Cypher 重新加载它?

    每个熟悉 MySQL 的人都可能使用过 mysqldump 命令 它可以生成代表 MySQL 数据库中的架构和数据的 SQL 语句文件 这些 SQL 文本文件通常用于多种用途 备份 播种副本 在安装之间复制数据库 将产品数据库复制到临时环境
  • 防止重复数据输入mysql数据库

    我试图让我的电子邮件订阅服务拒绝数据库中已存在的电子邮件 这样用户就不会订阅同一封电子邮件两次 这就是我所拥有的 但它不起作用 有什么想法吗
  • MySQL 中有“connect by”替代方案吗?

    如果我使用 Oracle 有connect by可用于创建分层查询的关键字 目前我正在一个项目中使用MySQL 我想知道是否有替代方案connect by在 MySQL 中 我尝试过谷歌 但到目前为止还没有结果 我想要实现的是通过一个查询从
  • mysql 使用什么样的哈希?

    我正在编写类似于 phpMyAdmin 的自己的代码 但我需要用户能够使用 mysql 数据库中的用户名和密码登录 我需要知道mysql数据库使用什么样的哈希来存储每个用户的密码 我检查了 dev mysql com 寻找答案 但除了以 开
  • ZeroDateTimeBehavior=convertToNull 在使用 hibernate 的 jdbc url 中不起作用

    通过 extern 属性文件 url 指定如下 jdbc mariadb xxxxx 3306 xxxxx zeroDateTimeBehavior convertToNull 连接工作正常并且能够查询数据库 通过休眠 我创建了一个映射到带
  • 如何获取 JDBC 中 UPDATE 查询影响的所有行?

    我有一项任务需要使用更新记录PreparedStatement 一旦记录被更新 我们知道更新查询返回计数 即受影响的行数 但是 我想要的不是计数 而是受更新查询影响的行作为响应 或者至少是受影响的行的 id 值列表 这是我的更新查询 UPD
  • 如何使用外连接和分组依据在查询中包含 NULL 值

    我有两个表 其中包含以下示例数据 Table 1 item name item id item desc 1 apple 2 orange 3 banana 4 grape 5 mango Table 2 user items user i
  • MyBatis 枚举的使用

    我知道以前有人问过这个问题 但我无法根据迄今为止找到的信息实施解决方案 所以也许有人可以向我解释一下 我有一个表 状态 它有两列 id 和 name id是PK 我不想使用 POJO Status 而是使用枚举 我创建了这样一个枚举 如下所
  • 日常 MySQL(部分和过滤)复制的最佳实践?

    我有一个相当大的数据库 有超过 40 个表 我只需要复制几个表 5 并且每个表也被过滤 我正在寻找一些复制这些数据的最佳实践 每天就足够了 我可以只选择几个表并为每个表包含一些 WHERE 子句 我正在考虑为每个表启动 mysqldump
  • 通过 PDO 将双精度数插入 MySQL 时精度损失

    我遇到了这种非常烦人的行为 我想知道我是否做错了什么 或者这是否是故意的 如果是的话 为什么 每当我在 php 5 3 中有一个 double 类型的变量 并且想将其插入到数据库 MYSQL 5 0 的 double 类型字段中时 该值总是
  • 通过 HTTPS 的隧道

    在我的工作场所 流量拦截器 防火墙变得越来越糟糕 我无法通过端口 22 连接到我的家用计算机 并且缺乏 ssh 访问权限让我感到难过 我以前可以通过将 SSH 移动到端口 5050 来使用它 但我认为最近的一些过滤器现在将此流量视为 IM
  • Chart.js - 使用 mysql 和 php 从数据库获取数据

    我正在尝试将静态数据转换为使用数据库结果 我将使用MySQL and PHP 示例代码 var randomScalingFactor function return Math round Math random 100 var lineC
  • 如何绑定值 INSERT INTO mysql perl

    我有下面的代码可以工作 但我需要知道如何绑定它们以确保安全 如果我只是将 new row 替换为 并将其放入执行中我收到错误 感谢您的帮助 foreach my field account field order new row param
  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是
  • 致命错误 - 未找到“Mongo”类

    我正在尝试执行此操作 但我收到以下错误 致命错误 在 C wamp www 中找不到类 Mongo Info PHP 5 38 MongoDB mongodb win32 i386 2 0 2 MongoDB PHP 驱动程序 mongo
  • 无法将句子插入数据库

    我有一些句子 我必须选择由 6 个以上单词组成的句子 然后它们将被插入到数据库中
  • 如何获取所有mysql元组结果并转换为json

    我能够从表中获取单个数据 但是当我试图获取表上的所有数据时 我只得到一行 cnn execute sql rows cnn fetchall column t 0 for t in cnn description for row in ro

随机推荐

  • 如何在 Debian 11/10 上安装 Tomcat 10

    Apache Tomcat 是一个开源 Web 服务器 带有用于发布基于 Java 的 Web 应用程序的 Servlet 容器 Tomcat 是由 Apache 软件基金会支持下的开放开发者社区开发和维护的 截至目前 Tomcat 10
  • 掌握 Bash 中的数字比较:综合指南

    Bash 是 Linux 和 Unix 系统中流行的命令行 shell 允许用户通过运行脚本或执行命令来有效地执行各种任务 编写 Bash 脚本的一个关键方面是能够根据变量值或命令输出做出决策 一项常见的决策任务是比较数值 本文提供了掌握
  • 如何并排放置两个 Div 元素

    在 Web 开发中 定位 HTML 元素的方法有无数种 一种常见的布局要求是并排放置两个 div 元素 这种布局在网页设计中经常使用 特别是当需要将内容水平分成不同的部分时 有多种方法可以实现此布局 包括使用 float flexbox 和
  • 如何在 RHEL 和 CentOS Stream 9 上安装 PHP 8.2-7.4

    PHP 是一种流行的脚本语言 用于开发动态 Web 应用程序 它是一种开源编程语言 可以轻松安装在包括 CentOS 9 在内的各种操作系统上 在本文中 我们将引导您完成在 CentOS 9 上安装 PHP 的步骤 在开始之前 请确保您拥有
  • Linux 中使用 GPG 密钥对的文件加密

    GPG 基本文件加密不需要公钥 私钥 但为了使加密文件更安全 您可以使用 RSA DSA 算法 这些算法生成公钥和私钥来加密文件 本文将帮助您在 Linux 中使用 GPG 密钥对完成以下三项文件加密任务 创建密钥对 为同一用户帐户本地加密
  • 了解基本的 Git 工作流程:添加、提交、推送

    在软件开发领域 版本控制至关重要 在各种可用的版本控制系统中 Git 因其稳健性 灵活性和分布式架构而成为行业标准 在本文中 我们将重点介绍基本 Git 工作流程的基本步骤 添加 提交和推送 了解 Git 在深入研究 Git 工作流程的复杂
  • 10 个适合旧电脑的最佳轻量级 Linux 发行版

    随着计算机的老化 其性能不可避免地会下降 操作系统的响应速度也会降低 对于想要继续使用旧硬件但受到可用资源限制的用户来说 这可能会令人沮丧 幸运的是 Linux 提供了各种针对旧计算机进行优化的轻量级发行版 使它们能够更流畅 更高效地运行
  • 如何在 CentOS/RHEL 7 和 Fedora 上安装 Python 3.9

    Python 是一种非常流行 用途广泛且易于学习的编程语言 广泛应用于从 Web 开发和数据分析到人工智能和机器学习的各个行业和应用程序 Python 3 9 是该语言的最新版本之一 提供了改进的性能和许多新功能 在本教程中 我们将指导您完
  • 如何在 Linux 上的 VirtualBox 中从 USB 驱动器启动

    使用 USB 启动物理机要容易得多 但 VirtualBox 不提供直接选择从 USB 启动的方法 因此 如果您有可启动 USB 驱动器 那么本文将帮助您了解如何使用可启动 USB 创建 VirtualBox 虚拟机 对于这个例子 我已经创
  • 如何在 Debian 9 Stretch 上安装 PHP(7.4、7.3 和 5.6)

    PHP 7 4 是可在 Debian 9 Stretch Linux 计算机上安装的最新版本 Ubuntu 用户可以访问我们的教程在 Ubuntu 上安装 PHP 7 本教程适用于 Debian 9 Stretch 用户在其系统上安装 PH
  • 如何在Linux终端上访问远程邮箱

    Linux 系统有大量的图形电子邮件客户端 您可以轻松安装它们以通过 POP IMAP 协议访问远程系统的邮箱 对于没有GUI界面的Linux服务器版本可以使用命令行邮件客户端访问远程邮箱 本教程将帮助您在Linux终端上使用POP IMA
  • Bash – 如何获取未来的日期和时间

    Linuxdate命令显示系统的当前日期和时间 在编写 shell 脚本时 我意识到有时我们需要查找未来的日期 例如 10 天 2 个月或 1 年之后的日期等 date 命令提供了一个选项来显示未来的日期 如所述 d date STRING
  • Magento 2 代码库和数据库备份脚本

    本教程将帮助您使用 shell 脚本自动执行 Magento2 代码库和数据库备份过程 该脚本将按计划的时间间隔执行自动备份 该脚本还能够根据配置删除较旧的备份 设置Magerun2 您需要在系统上下载并配置 Magerun2 脚本 wge
  • 如何使用 Mysqlcheck 检查和修复 MySQL 表

    数据库管理系统是现代软件应用程序无缝运行不可或缺的一部分 MySQL 是世界上使用最广泛的关系数据库管理系统之一 随着数据库的增长和发展 确保其中表的完整性 性能和运行状况至关重要 这就是 Mysqlcheck 发挥作用的地方 1 Mysq
  • 如何在 Ubuntu 20.04 上使用 VSFTPD 设置 FTP 服务器

    本文介绍如何在 Ubuntu 20 04 上安装和配置 FTP 服务器 用于在设备之间共享文件 FTP 文件传输协议 是一种标准网络协议 用于在远程网络之间传输文件 有多种可用于 Linux 的开源 FTP 服务器 最知名和最广泛使用的是P
  • 如何在 Ubuntu 20.04 上添加交换空间

    交换空间是磁盘上的空间 当物理 RAM 内存已满时使用 当 Linux 系统耗尽 RAM 时 非活动页面将从 RAM 移至交换空间 交换空间可以采用专用交换分区或交换文件的形式 通常 在虚拟机上运行 Ubuntu 时 不存在交换分区 唯一的
  • 如何在 Debian 9 上安装和配置 Redmine

    Redmine 是一款免费的开源项目管理和问题跟踪应用程序 它是跨平台和跨数据库的 构建在 Ruby on Rails 框架之上 Redmine包括对多个项目 wiki 问题跟踪系统 论坛 日历 电子邮件通知等的支持 在本教程中 我们将向您
  • 如何在 Debian 10 上设置 WireGuard VPN

    WireGuard 是一种通用 VPN 虚拟专用网络 采用最先进的加密技术 与其他流行的 VPN 解决方案 例如 IPsec 和 相比OpenVPN 线卫通常速度更快 更容易配置并且占用空间更小 它是跨平台的 几乎可以在任何地方运行 包括
  • 如何在 Ubuntu 20.04 上安装 Plex 媒体服务器

    Plex 是一款流媒体服务器 可让您组织视频 音乐和照片集 并将媒体随时随地流式传输到计算机 手机 平板电脑或电视 Plex 媒体服务器可以安装在所有主要操作系统和设备上 本文介绍了如何安装Plex 媒体服务器在 Ubuntu 20 04
  • 如何在 Debian 9 上使用 Apache 安装和保护 phpMyAdmin

    phpMyAdmin 是一个免费 开源的基于 PHP 的应用程序 旨在通过基于 Web 的界面简化 MySQL 和 MariaDB 服务器的管理 phpMyAdmin 允许您管理 MySQL 数据库 用户帐户和权限 执行 SQL 语句 以各