安装

PHPMyAdmin不会向MySQL应用任何特殊的安全方法 数据库服务器。它仍然是系统管理员’s job to grant 正确上的MySQL数据库的权限。 phpmyadmin’s 用户 页面可用于此。

警告

苹果电脑 用户应注意,如果您之前的版本 苹果电脑 OS X.,stuffit不妥善了 苹果电脑 formats. So you’ll have 以便在Bbedit中重新访问UNIX样式之前的PHPMYADMIN脚本 将它们上传到您的服务器,因为PHP似乎不喜欢 苹果电脑-风格 线条字符的结尾(“\r”).

Linux发行版

PHPMyAdmin包含在大多数Linux发行版中。建议使用 有可能的分销包 - 他们通常为您提供集成 分发,您将自动从您的分发中获取安全更新。

debian.

debian.’S包存储库包括PHPMyAdmin包,但请注意 the configuration file is maintained in /etc/phpmyadmin 和 may differ in 来自官方phpmyadmin文件的某种方式。

opensuse.

opensuse已经配备了phpmyadmin包,只需安装packages the opensuse.构建服务.

Ubuntu.

ubuntu船phpmyadmin包,但是,如果你想使用最近的版本,你 可以使用包裹 ppa formichalčihař.

Gentoo

Gentoo也在附近的股票配置中填补了phpmyadmin包装 as in a webapp-config configuration. Use emerge dev-db/phpmyadmin to install.

曼加拉夫

曼加拉夫 ships the phpMyAdmin package in their contrib branch and can be 通过通常的控制中心安装。

Fedora.

Fedora.填写PHPMyAdmin包,但请注意配置文件 is maintained in /etc/phpMyAdmin/ 并且可能以某种方式不同 官方phpmyadmin文件。

Red Hat Enterprise Linux

Red Hat Enterprise Linux本身,因此等衍生品等CentOS Don’t 船舶phpmyadmin,但是fedora驱动的存储库 Enterprise Linux的额外软件包(epel)在这样做,如果它’s 启用. 但请注意,配置文件是维护的 /etc/phpMyAdmin/ 并且可能以某种方式不同 官方phpmyadmin文件。

在Windows上安装

在Windows上获取PHPMyAdmin的最简单方法是使用第三方产品 其中包含phpmyadmin与数据库和Web服务器一起如 XAMPP..

您可以找到更多此类选项 维基百科.

快速安装

  1. 从phpmyadmin.net中选择合适的分发套件 下载页面。一些套件仅包含英文消息,其他套件 包含所有语言。我们’我假设你选择了一个名字的套件 looks like phpMyAdmin-x.x.x -all-languages.tar.gz.
  2. 确保您已下载了正版档案,请参阅 验证phpmyadmin发布.
  3. Untar或解压缩分发(务必解压缩子目录): tar -xzvf phpMyAdmin_x.x.x-all-languages.tar.gz in your webserver’S文档根。如果你不’T直接访问您的 文档根,将文件放在本地计算机上的目录中, 并且,在步骤4之后,使用Web服务器上的目录使用, for example, ftp.
  4. 确保所有脚本都有适当的所有者(如果PHP是 以安全模式运行,具有与所有者不同的脚本 其他脚本的所有者将是一个问题)。看 4.2什么’使PHPMyAdmin安全防止邪恶的访问的首选方式? and 1.26我刚刚在我的文档根目录中安装了phpmyadmin,但我收到错误“没有指定输入文件”在尝试运行phpmyadmin时。 for suggestions.
  5. 现在,您必须配置安装。有两种方法 可以使用。传统上,用户手工编辑副本 配置.inc.php,但现在提供了一个向导样式设置脚本 对于喜欢图形安装​​的人。创造A. 配置.inc.php 仍然是一个快速的入门方式,需要 一些高级功能。

手动创建文件

要手动创建文件,只需使用文本编辑器即可创建 file 配置.inc.php (you can copy 配置.sample.inc.php to get 主要(顶级)phpmyadmin中的一个最小配置文件 directory (the one that contains 指数.php)。 phpMyAdmin first loads libraries/config.default.php 和 then overrides those values with anything found in 配置.inc.php. If the default value is 好的,特定的环境,无需将其包含在内 配置.inc.php。你’LL可能只需要几个指令进行;一种 简单配置可能如下所示:

<?php
$cfg['blowfish_secret'] = 'ba17c1ec07d65003';  // use here a value of your choice

$i=0;
$i++;
$cfg['Servers'][$i]['auth_type']     = 'cookie';
?>

或者,如果您愿意每次登录时不提示:

<?php

$i=0;
$i++;
$cfg['Servers'][$i]['user']          = 'root';
$cfg['Servers'][$i]['password']      = 'cbb74bc'; // use here your password
$cfg['Servers'][$i]['auth_type']     = 'config';
?>

有关可能的配置值的完整说明,请参阅 配置 of this document.

使用设置脚本

Instead of manually editing 配置.inc.php, you can use phpMyAdmin’s 设置功能。首先,您必须手动创建一个文件夹 配置 在phpmyadmin目录中。这是一种安全措施。在A. Debian系统您可以使用以下命令:

/ usr / sbin / pma-configure

笔记

debian. and Ubuntu have simplified this setup and all you need to do is to execute / usr / sbin / pma-configure.

在其他平台上,只需创建文件夹并确保您的网络 服务器已读写访问它。 1.26我刚刚在我的文档根目录中安装了phpmyadmin,但我收到错误“没有指定输入文件”在尝试运行phpmyadmin时。 can help with this.

Next, open your browser and visit the location where you installed phpMyAdmin, with the /setup suffix. If you have an existing configuration, use the Load button to bring its content inside the setup panel. Note that 在明确选择“保存”中,更改不会保存到磁盘上来自 配置 屏幕的区域。通常,脚本会保存新的 配置.inc.php to the 配置/ directory, but if the webserver does 没有适当的权限,您可能会看到错误“Cannot load or save configuration.” Ensure that the 配置/ directory exists and has the proper permissions - or use the Download link to save the 在本地配置文件并将其上传(通过FTP或某些类似手段)到 proper location.

一旦文件保存, 必须重置权限,再次作为安全性重置 measure:

/ usr / sbin / pma-secure

笔记

debian. and Ubuntu have simplified this setup and all you need to do is to execute / usr / sbin / pma-secure.

现在,该文件已准备好使用。您可以选择查看或编辑 文件与您最喜欢的编辑器,如果您愿意设置一些高级 安装脚本未提供的选项。

  1. If you are using the auth_type “config”,有人建议你 保护PHPMyAdmin安装目录,因为使用配置 不需要用户输入密码以访问PHPMyAdmin 安装。使用备用身份验证方法 推荐,例如使用http-auth .htaccess. 文件或切换到使用 auth_type cookie或http。看看 ISP,多用户安装 尤其是其他信息 4.4 phpmyadmin总是给予“Access denied”使用HTTP身份验证时。.
  2. 打开 main phpmyadmin目录 在你的 browser. PHPMyAdmin现在应该显示一个欢迎屏幕和数据库,或者 如果使用,请登录对话框 http. or cookie身份验证模式。
  3. 你应该 deny access to the ./libraries./setup/lib 您的Web服务器配置中的子文件夹。 这种配置可防止可能 可能的路径曝光和跨侧脚本漏洞 碰巧在该代码中找到。对于apache webserver,这是 经常用a完成 .htaccess. 文件中的文件。
  4. 保护公共PHPMYADMIN安装通常是一个好主意 反对机器人的访问,因为他们通常不能做任何事情 there. You can do this using robots.txt file in root of your Web服务器配置的Web服务器或限制访问,请参阅 1.42如何防止机器人访问phpmyadmin?.

验证phpmyadmin发布

自2015年7月以来,所有PHPMYADMIN版本都被加密签署 释放开发人员,目前是Marc Delisle。他的关键身份证是 0x81AF644A,他的PGP指纹是:

436F F188 4B1A 0C3F DCBF 0D79 FEFC 65D1 81AF 644A

您可以从中获取更多的身份证信息 //keybase.io/lem9。您应该验证签名匹配项 您已下载的存档。这样你就可以确定你正在使用 释放的代码相同。

Each archive is accompanied with .asc files which contains the PGP signature 为了它。在同一文件夹中有两个它们,可以验证签名:

$ gpg --verify phpMyAdmin-4.4.9-all-languages.zip.asc
gpg: Signature made Fri Jun 12 13:09:58 2015 CEST using RSA key ID 81AF644A
gpg: Can't check signature: No public key

正如您可以看到GPG抱怨它不知道公钥。在这 点您应该执行以下步骤之一:

$ gpg --import phpmyadmin.keyring
  • 从其中一个关键服务器下载并导入密钥:
$ gpg --keyserver hkp://pgp.mit.edu --recv-keys 81AF644A
gpg: requesting key 81AF644A from hkp server pgp.mit.edu
gpg: key 81AF644A: public key "Marc Delisle <[email protected]>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

这将改善局势有点 - 此时你可以验证 给定密钥的签名是正确的,但你仍然不能相信使用的名称 in the key:

$ gpg --verify phpMyAdmin-4.4.9-all-languages.zip.asc
gpg: Signature made Fri Jun 12 13:09:58 2015 CEST using RSA key ID 81AF644A
gpg: Good signature from "Marc Delisle <[email protected]>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 436F F188 4B1A 0C3F DCBF  0D79 FEFC 65D1 81AF 644A

这里的问题是任何人都可以用这个名字发出密钥。你需要 确保该密钥实际上由上述人员拥有。 GNU隐私 手册涵盖了本章中的这一主题 在公众上验证其他键 keyring。最可靠的方法是亲自满足开发人员 Exchange关键指纹,但您也可以依靠信任的网络。这条路 您可以通过遇到的其他人的签名来相信关键 开发人员亲自。例如,您可以看到如何 马克’s key links to Linus’s key.

密钥可信后,不会发生警告:

$ gpg --verify phpMyAdmin-4.4.9-all-languages.zip.asc
gpg: Signature made Fri Jun 12 13:09:58 2015 CEST using RSA key ID 81AF644A
gpg: Good signature from "Marc Delisle <[email protected]>" [full]

如果签名无效(存档已更改),您将获得一个 清除错误,无论密钥是否可信赖:

$ gpg --verify phpMyAdmin-4.4.9-all-languages.zip.asc
gpg: Signature made Fri Jun 12 13:09:58 2015 CEST using RSA key ID 81AF644A
gpg: BAD signature from "Marc Delisle <[email protected]>" [unknown]

phpmyadmin配置存储

对于一整套附加功能(书签,评论, SQL.-历史, tracking mechanism, PDF. - 特征,柱内容转换, 等)您需要创建一组特殊表。这些表可以位于 在您自己的数据库中,或者在中央数据库中进行多用户安装 (然后,控制器访问此数据库,因此没有其他用户 应该有权利)。

零配置

在许多情况下,可以自动创建此数据库结构 配置。这被称为“零配置”模式,可以特别是 适用于共享托管情况。默认情况下,“zeroconf”模式是截止的 disable set $cfg['ZeroConf'] to false.

以下三种方案由零配置模式覆盖:

  • 进入数据库时​​,配置存储表不是 目前,PHPMYADMIN提供从“操作”选项卡创建它们。
  • 进入数据库时​​,该数据库已存在,软件 自动检测到此并开始使用它们。这是最常见的 情况;最初自动创建表后,它们是 不断使用而不会打扰用户;这也是最有用的 shared hosting where the user is not able to edit 配置.inc.php and 通常,用户只能访问一个数据库。
  • 当用户访问多个数据库时,如果用户首先进入 包含配置存储表的数据库然后切换到 another database, phpmyadmin继续使用第一个数据库的表;用户是 没有提示在新数据库中创建更多表。

手动配置

Please look at your ./sql/ directory, where you should find a file called create_tables.sql.。 (如果您使用的是Windows Server, pay注意 1.23 I.’M在Win32机器上运行MySQL。每次我创建一个新表,表和列名称将更改为小写!)。

如果您已拥有此基础架构:

  • 升级到MySQL 4.1.2或更新,请使用 sql/upgrade_tables_mysql_4_1_2+.sql.
  • 升级到2.5.0或更新的PHPMYADMIN 4.3.0或更新(<= 4.2.x), please use sql/upgrade_column_info_4_3_0+.sql.

和 then create new tables by importing sql/create_tables.sql.

您可以使用PHPMyAdmin为您创建表。请做 意识到您可能需要特殊(管理员)权限来创建 数据库和表格,脚本可能需要一些调整, 根据数据库名称。

After having imported the sql/create_tables.sql file, you should specify the table names in your 配置.inc.php file. The 用于该指令可以在其中找到 配置.

您还需要有一个ControlUser ($cfg['Servers'][$i]['controluser'] and $cfg['Servers'][$i]['controlpass'] settings) 具有适当的权益。例如,您可以创建它 使用以下声明:

GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost'  IDENTIFIED BY 'pmapass';

从旧版本升级

绝不 通过现有安装提取新版本 phpmyadmin;我们有证据表明这引起的问题。

Simply copy 配置.inc.php from your previous installation into 新的未包装。旧版本的配置文件可能 随着某些选项已更改或删除,需要一些调整。 为了与PHP 5.3及更高版本的兼容性,删除a set_magic_quotes_runtime(0); 您可能在附近找到的声明 配置文件的结尾。

你应该 不是 copy libraries/config.default.php over 配置.inc.php 因为默认配置文件是版本 - specific.

如果您已将MySQL Server从以前的版本升级到4.1.2至 版本5.x或更新,如果使用phpmyadmin配置存储,您 should run the SQL. script found in sql/upgrade_tables_mysql_4_1_2+.sql.

如果您从2.5.0或较新的PHPMyAdmin升级到2.5.0或更新 newer (<= 4.2.x),如果使用phpmyadmin配置存储,您 should run the SQL. script found in sql/upgrade_column_info_4_3_0+.sql.

不要忘记清除浏览器缓存并通过留空旧会话 注销和登录再次登录。

使用身份验证模式

http. 建议使用cookie身份验证模式 多用户 environment 您希望为用户提供自己的数据库和 don’希望他们和他人一起玩。然而,意识到MS Internet Explorer似乎真的是关于饼干的错误,至少直到版本 6. Even in a 单用户环境,您可能更愿意使用 http. 或cookie模式,以便您的用户/密码对在清除中 configuration file.

http. 和cookie身份验证 模式更安全:MySQL登录信息不需要 设置在PHPMyAdmin配置文件(除外) $cfg['Servers'][$i]['controluser'])。 但是,请记住密码以纯文本传播,除非 您正在使用HTTPS协议。在cookie模式下,密码是 存储,用AES算法加密,在临时cookie中。

然后每个人 真的 用户应该被授予一组权限 在一组特定数据库上。通常你应该’t give global 普通用户的特权,除非您了解这些影响 权限(例如,您正在创建超级用户)。 例如,授予用户 real_user. 所有特权都有 the database user_base.:

GRANT ALL PRIVILEGES ON user_base..* TO 'real_user'@localhost IDENTIFIED BY 'real_password';

现在可以通过MySQL用户管理完全控制用户 系统。使用HTTP或Cookie身份验证模式,您不’t need to fill the 用户/密码字段 $cfg['Servers'].

http.身份验证模式

签名身份验证模式

在会话中保存凭据的基本示例可用作 examples/signon.php:

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Single signon for phpMyAdmin
 *
 * This is just example how to use session based single signon with
 * phpMyAdmin, it is not intended to be perfect code and look, only
 * shows how you can integrate this functionality in your application.
 *
 * @package    PhpMyAdmin
 * @subpackage Example
 */

/* Need to have cookie visible from parent directory */
session_set_cookie_params(0, '/', '', false);
/* Create signon session */
$session_name = 'SignonSession';
session_name($session_name);
// Uncomment and change the following line to match your $cfg['SessionSavePath']
//session_save_path('/foobar');
session_start();

/* Was data posted? */
if (isset($_POST['user'])) {
    /* Store there credentials */
    $_SESSION['PMA_single_signon_user'] = $_POST['user'];
    $_SESSION['PMA_single_signon_password'] = $_POST['password'];
    $_SESSION['PMA_single_signon_host'] = $_POST['host'];
    $_SESSION['PMA_single_signon_port'] = $_POST['port'];
    /* Update another field of server configuration */
    $_SESSION['PMA_single_signon_cfgupdate'] = array('verbose' => 'Signon test');
    $id = session_id();
    /* Close that session */
    session_write_close();
    /* Redirect to phpMyAdmin (should use absolute URL here!) */
    header('Location: ../index.php');
} else {
    /* Show simple form */
    header('Content-Type: text/html; charset=utf-8');
    echo '<?xml version="1.0" encoding="utf-8"?>' . "\n";
    ?>
    <!DOCTYPE HTML>
    <html lang="en" dir="ltr">
    <head>
    <link rel="icon" href="../favicon.ico" type="image/x-icon" />
    <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
    <meta charset="utf-8" />
    <title>phpMyAdmin single signon example</title>
    </head>
    <body>
    <?php
    if (isset($_SESSION['PMA_single_signon_error_message'])) {
        echo '<p class="error">';
        echo $_SESSION['PMA_single_signon_error_message'];
        echo '</p>';
    }
    ?>
    <form action="signon.php" method="post">
    Username: <input type="text" name="user" /><br />
    Password: <input type="password" name="password" /><br />
    Host: (will use the one from config.inc.php by default)
    <input type="text" name="host" /><br />
    Port: (will use the one from config.inc.php by default)
    <input type="text" name="port" /><br />
    <input type="submit" />
    </form>
    </body>
    </html>
    <?php
}
?>

或者,您也可以使用这种方式与OpenID集成,如图所示 in examples/openid.php:

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Single signon for phpMyAdmin using OpenID
 *
 * This is just example how to use single signon with phpMyAdmin, it is
 * not intended to be perfect code and look, only shows how you can
 * integrate this functionality in your application.
 *
 * It uses OpenID pear package, see http://pear.php.net/package/OpenID
 *
 * User first authenticates using OpenID and based on content of $AUTH_MAP
 * the login information is passed to phpMyAdmin in session data.
 *
 * @package    PhpMyAdmin
 * @subpackage Example
 */

if (false === @include_once 'OpenID/RelyingParty.php') {
    exit;
}

/**
 * Map of authenticated users to MySQL user/password pairs.
 */
$AUTH_MAP = array(
    'http://launchpad.net/~username' => array(
        'user' => 'root',
        'password' => '',
        ),
    );

/**
 * Simple function to show HTML page with given content.
 *
 * @param string $contents Content to include in page
 *
 * @return void
 */
function Show_page($contents)
{
    header('Content-Type: text/html; charset=utf-8');
    echo '<?xml version="1.0" encoding="utf-8"?>' . "\n";
    ?>
    <!DOCTYPE HTML>
    <html lang="en" dir="ltr">
    <head>
    <link rel="icon" href="../favicon.ico" type="image/x-icon" />
    <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
    <meta charset="utf-8" />
    <title>phpMyAdmin OpenID signon example</title>
    </head>
    <body>
    <?php
    if (isset($_SESSION) && isset($_SESSION['PMA_single_signon_error_message'])) {
        echo '<p class="error">' . $_SESSION['PMA_single_signon_message'] . '</p>';
        unset($_SESSION['PMA_single_signon_message']);
    }
    echo $contents;
    ?>
    </body>
    </html>
    <?php
}

/* Need to have cookie visible from parent directory */
session_set_cookie_params(0, '/', '', false);
/* Create signon session */
$session_name = 'SignonSession';
session_name($session_name);
session_start();

// Determine realm and return_to
$base = 'http';
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
    $base .= 's';
}
$base .= '://' . $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'];

$realm = $base . '/';
$returnTo = $base . dirname($_SERVER['PHP_SELF']);
if ($returnTo[/*overload*/mb_strlen($returnTo) - 1] != '/') {
    $returnTo .= '/';
}
$returnTo .= 'openid.php';

/* Display form */
if (!count($_GET) && !count($_POST) || isset($_GET['phpMyAdmin'])) {
    /* Show simple form */
    $content = '<form action="openid.php" method="post">
OpenID: <input type="text" name="identifier" /><br />
<input type="submit" name="start" />
</form>
</body>
</html>';
    Show_page($content);
    exit;
}

/* Grab identifier */
if (isset($_POST['identifier'])) {
    $identifier = $_POST['identifier'];
} else if (isset($_SESSION['identifier'])) {
    $identifier = $_SESSION['identifier'];
} else {
    $identifier = null;
}

/* Create OpenID object */
try {
    $o = new OpenID_RelyingParty($returnTo, $realm, $identifier);
} catch (OpenID_Exception $e) {
    $contents = "<div class='relyingparty_results'>\n";
    $contents .= "<pre>" . $e->getMessage() . "</pre>\n";
    $contents .= "</div class='relyingparty_results'>";
    Show_page($contents);
    exit;
}

/* Redirect to OpenID provider */
if (isset($_POST['start'])) {
    try {
        $authRequest = $o->prepare();
    } catch (OpenID_Exception $e) {
        $contents = "<div class='relyingparty_results'>\n";
        $contents .= "<pre>" . $e->getMessage() . "</pre>\n";
        $contents .= "</div class='relyingparty_results'>";
        Show_page($contents);
        exit;
    }

    $url = $authRequest->getAuthorizeURL();

    header("Location: $url");
    exit;
} else {
    /* Grab query string */
    if (!count($_POST)) {
        list(, $queryString) = explode('?', $_SERVER['REQUEST_URI']);
    } else {
        // I hate php sometimes
        $queryString = file_get_contents('php://input');
    }

    /* Check reply */
    $message = new OpenID_Message($queryString, OpenID_Message::FORMAT_HTTP);

    $id = $message->get('openid.claimed_id');

    if (!empty($id) && isset($AUTH_MAP[$id])) {
        $_SESSION['PMA_single_signon_user'] = $AUTH_MAP[$id]['user'];
        $_SESSION['PMA_single_signon_password'] = $AUTH_MAP[$id]['password'];
        session_write_close();
        /* Redirect to phpMyAdmin (should use absolute URL here!) */
        header('Location: ../index.php');
    } else {
        Show_page('<p>User not allowed!</p>');
        exit;
    }
}

如果您打算使用除,您必须使用其他一些方式传递凭据 在PHP中实现包装器以获取该数据并将其设置为 $cfg['Servers'][$i]['SignonScript']。有很小的例子 in examples/signon-script.php:

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Single signon for phpMyAdmin
 *
 * This is just example how to use script based single signon with
 * phpMyAdmin, it is not intended to be perfect code and look, only
 * shows how you can integrate this functionality in your application.
 *
 * @package    PhpMyAdmin
 * @subpackage Example
 */


/**
 * This function returns username and password.
 *
 * It can optionally use configured username as parameter.
 *
 * @param string $user User name
 *
 * @return array
 */
function get_login_credentials($user)
{
    /* Optionally we can use passed username */
    if (!empty($user)) {
        return array($user, 'password');
    }

    /* Here we would retrieve the credentials */
    $credentials = array('root', '');

    return $credentials;
}

配置身份验证模式

  • 这种模式有时是安全的,因为它需要你填补 $cfg['Servers'][$i]['user'] and $cfg['Servers'][$i]['password'] 字段(因此,任何可以阅读您的人 配置.inc.php 可以发现您的用户名和密码)。
  • 在里面 ISP,多用户安装 部分,有一个条目解释了如何 保护您的配置文件。
  • 有关此模式下的其他安全性,您可能希望考虑 Host authentication $cfg['Servers'][$i]['AllowDeny']['order']$cfg['Servers'][$i]['AllowDeny']['rules'] 配置指令。
  • 与cookie和http不同,不需要用户在第一个时登录 加载phpmyadmin站点。这是通过设计,但可以允许任何 用户访问您的安装。使用一些限制方法是 suggested, perhaps a .htaccess. 使用http-auth指令或禁止文件 在一个路由器或防火墙上传入的HTTP请求就足够了(两者 其中超出了本手册的范围,但很容易搜索 with Google).

SWEKEY身份验证模式

Swekey是一种低成本认证USB密钥,可用于 Web应用程序。当Swekey身份验证激活时,PHPMyAdmin requires the users’在进入登录之前将被插入S Sweke 页面(目前仅支持Cookie身份验证模式)。鞋跟 默认情况下禁用身份验证。要启用它,请添加以下内容 line to 配置.inc.php:

$cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey.conf';

You then have to create the swekey.conf file that will associate 每个用户都有他们的swekey id。放置此文件很重要 在您的Web服务器之外’s文档根(在示例中,它是 located in /etc)。 Feel free to use it with your own users’ 信息。如果您想购买Swekeke,请访问 //www.phpmyadmin.net/auth_key/ 由于此链接为PhPMyAdmin提供资金。

提供了一个自我记录的示例文件 file examples/swekey.sample.conf:

# This is a typical file used to enable Swekey hardware authentication.
#
# To activate the Swekey authentication add the following line to your config.inc.php file.
#       $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf';
# Then rename this file "swekey-pma.conf" and copy it to the /etc directory.
# Add all the Swekey ids you want to grant access to in the file.
# After each Swekey id put the corresponding user name.
#
# If you don't know the id of a Swekey just visit http://www.swekey.com?sel=support
# while your Swekey is connected.
#
# If you need to purchase a Swekey please visit //www.phpmyadmin.net/auth_key/
# since this link provides funding to PhpMyAdmin.
#

0000000000000000000000000000763A:root
000000000000000000000000000089E4:steve
0000000000000000000000000000231E:scott

#
# It is recommended to include the following lines to contact the
# authentication servers in SSL mode.
#

SERVER_CHECK=//auth-check-ssl.musbe.net
SERVER_RNDTOKEN=//auth-rnd-gen-ssl.musbe.net
SERVER_STATUS=//auth-status-ssl.musbe.net

#
# The path of the root certificate file used to ensure a secure
# communication with the authentication servers in SSL mode.
# If not specified, will use musbe-ca.crt found in your
# phpMyAdmin/libraries/auth/swekey.
#

#CA_FILE=/var/http-root/phpmyadmin/libraries/auth/swekey/musbe-ca.crt

#
# If your server receives many login requests, you can enable the random
# token caching to accelerate the authentication process.
# Token caching is enabled by default.
#

#ENABLE_TOKEN_CACHE=0

保护您的PHPMyAdmin安装

PHPMYADMIN团队试图努力使申请安全,但是在那里 总是让您的安装更安全:

  • Remove the setup directory from phpMyAdmin, you will probably not 在初始设置后使用它。

  • 正确选择身份验证方法 - cookie身份验证模式 可能是共享托管的最佳选择。

  • 如果你不’希望所有MySQL用户都能访问 phpmyadmin,你可以使用 $cfg['Servers'][$i]['AllowDeny']['rules'] to limit them.

  • 考虑在身份验证代理后面隐藏phpmyadmin,这样 用户需要在提供MySQL凭据之前进行身份验证 到phpmyadmin。您可以通过将Web服务器配置为请求来实现这一目标 HTTP身份验证。例如,在Apache中,可以使用:

    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /usr/share/phpmyadmin/passwd
    Require valid-user
    

    更改配置后,您需要创建一个用户列表 可以进行身份​​验证。这可以使用 htpasswd. utility:

    htpasswd. -c /usr/share/phpmyadmin/passwd username
    
  • 如果您害怕自动攻击,请启用CAPTCHA $cfg['CaptchaLoginPublicKey'] and $cfg['CaptchaLoginPrivateKey'] might be an option.