我希望你热烈欢迎阅读这本书!第一章的目标是:
- 了解此软件产品在 web 频谱中的位置
- 注意它的所有特性
- 熟练安装和配置 it
当我们查看主机提供商目前提供的 web 应用程序平台时,我们将看到最流行的是 PHP/MySQL 组合。
得到各自主页的良好支持-http://www.php.net 和http://www.mysql.com -这对搭档使开发人员能够构建大量现成的开源 web 应用程序,最重要的是,使内部开发人员能够快速部署可靠的 web 解决方案。
MySQL 主要符合 SQL:2003 标准,是一个以其速度、健壮性和较小的连接开销而闻名的数据库系统。这在 web 环境中非常重要,因为在 web 环境中,必须尽可能快地提供页面。
PHP 通常作为一个模块安装在 web 服务器中,是一种流行的脚本语言,在这种语言中,编写应用程序的目的是在后端与 MySQL(或其他数据库系统)通信,在前端与浏览器通信。具有讽刺意味的是,首字母缩略词的意义随着网络的发展而发展,从个人主页到专业主页,再到目前的递归定义PHP:超文本预处理器。上有一篇关于连续更名的博客帖子 http://blog.roshambo.org/how-the-php-acronym-was-reborn 。PHP 可以在数百万个 web 域上使用,并为 Facebook、Yahoo!等著名网站提供支持!,YouTube 和维基百科。
phpMyAdmin(官方主页http://www.phpmyadmin.net 是一个用 PHP 编写的 web 应用程序;它包含(像大多数 web 应用程序一样)XHTML、CSS 和 JavaScript 客户端代码。该应用程序为管理 MySQL 数据库提供了一个完整的 web 界面,被广泛认为是该领域的领先应用程序。
自诞生以来,它一直是开源的,得到了世界各地众多开发人员和翻译人员的支持(在撰写本书时被翻译成 65 种语言)。该项目目前托管在 SourceForge.net 上,由 phpMyAdmin 团队使用其设施开发。
各地的主机提供商都通过在服务器上安装 phpMyAdmin 来显示他们对 phpMyAdmin 的信任。流行的 cPanel(一个网站控制应用程序)包含 phpMyAdmin。此外,只要供应商的服务器满足最低要求(请参阅本章后面的系统要求部分),我们就可以在我们的 web 服务器上安装我们自己的 phpMyAdmin 副本。
phpMyAdmin 的目标是为 MySQL 服务器和数据提供完整的基于 web 的管理,并跟上 MySQL 和 web 标准的发展。虽然该产品始终在不断发展,但它支持所有标准操作以及其他功能。
开发团队根据报告的 bug 和要求的特性不断微调产品,定期发布新版本。
phpMyAdmin 提供的功能涵盖基本的 MySQL 数据库和表操作。它还有一个内部系统,用于维护元数据以支持高级功能。最后,系统管理员可以从 phpMyAdmin 管理用户和权限。需要注意的是,phpMyAdmin 对可用操作的选择取决于用户对特定 MySQL 服务器的权限。
有关 phpMyAdmin 的更多信息,请访问主页的文档页面http://www.phpmyadmin.net/home_page/docs.php 。此外,开发团队在社区的帮助下,在上维护了一个 wikihttp://wiki.phpmyadmin.net 。
是时候安装该产品并对其进行最低限度的配置以供首次使用了。
我们安装 phpMyAdmin 的原因可能是:
- 我们的主机提供商没有安装中心副本
- 我们的提供商安装了它,但安装的版本不是最新版本
- 我们直接在企业的 web 服务器上工作
请注意,如果我们选择安装一种 AMP 产品(通常将 phpMyAdmin 作为其产品的一部分),则可以省去 phpMyAdmin 安装步骤。有关详细信息,请访问http://en.wikipedia.org/wiki/List_of_AMP_packages 。
一些主机提供商提供了一个集成的 web 面板,我们可以在其中管理帐户,包括 MySQL 帐户,还可以使用文件管理器上载 web 内容。根据这一点,我们用于将 phpMyAdmin 源文件传输到 web 空间的机制可能会有所不同。在开始安装之前,我们需要以下一些特定信息:
- web 服务器的名称或地址。在这里,我们假设它是www.mydomain.com。
- 我们的 web 服务器的帐户信息(用户名、密码)。此信息将用于 FTP 或 SFTP 传输、SSH 登录或 web 控制面板登录。
- MySQL 服务器的名称或 IP 地址。如果此信息不可用,则可以选择
localhost
,这意味着 MySQL 服务器与 web 服务器位于同一台机器上。我们假设这是localhost
。 - 我们的 MySQL 服务器的帐户信息(用户名、密码)。
随附的 Documentation.html
中始终说明了特定 phpMyAdmin 版本的最新要求。对于 phpMyAdmin 3.4,所需的最低 PHP 版本是 PHP5.2,支持会话,支持标准 PHP 库(SPL)和JSON支持。此外,web 服务器必须能够访问 MySQL 服务器(版本 5.0 或更高版本)-本地或远程计算机上。强烈建议使用PHP mcrypt扩展,以提高 cookie 身份验证模式下的性能(详见第 2 章。事实上,在 64 位服务器上,此扩展是必需的。
在浏览器端,无论使用何种身份验证模式,都必须激活 cookie 支持。
在的下载部分有各种文件可用 http://www.phpmyadmin.net 。这里可能提供多个版本,下载最新的稳定版本总是一个好主意。我们只需要下载一个文件,它可以在任何平台(浏览器、web 服务器、MySQL 或 PHP 版本)下工作。对于版本 3.4,有两组文件-英语和所有语言。如果我们只需要英文界面,我们可以下载一个名称包含英文的文件,例如phpMyAdmin-3.4.5-English.zip。另一方面,如果我们需要至少一种其他语言,选择所有语言将是合适的。
如果我们使用的服务器只支持 PHP4,PHP 团队从 2007 年 12 月 31 日起就停止了对它的支持,那么 phpMyAdmin 的最新稳定版本不是下载的好选择。我们可以使用版本 2.11.x,这是支持 PHP4 的最新分支,尽管 phpMyAdmin 团队也已经停止支持该版本。
提供的文件有多种扩展名: .zip, .tar.bz2, .tar.gz, .tar.xz, and .7z
。下载一个具有相应提取器的扩展名的文件。在 Windows 世界中, .zip
是最通用的文件格式,尽管它比 .gz
或 .bz2
(Linux/Unix 世界中常见)大。 .7z
扩展名表示 7-Zip 文件,这是一种比提供的其他格式实现更高压缩比的格式;可在处使用提取器 http://www.7-zip.org 。在下面的示例中,我们将假设所选文件是phpMyAdmin-3.4.5-all-languages.zip。
单击相应的文件后,SourceForge.net 将选择最近的镜像站点。文件将开始下载,我们可以将其保存在计算机上。
下一步取决于您使用的平台。以下各节详细介绍了一些常见平台的程序。您可以直接进入相关章节。
使用 Windows 资源管理器,我们双击刚刚在 Windows 客户端下载的 phpMyAdmin-3.4.5-all-languages.zip
文件。应该启动一个文件提取器,向我们显示主目录 phpMyAdmin-3.4.5-all-languages
中的所有脚本和目录。
使用文件提取器提供的任何机制将所有文件(包括子目录)保存到工作站上的某个位置。在这里,我们选择了 C:\
。因此,提取器创建了一个 C:\phpMyAdmin-3.4.5-all-languages
目录。
现在,是时候将整个目录结构 C:\phpMyAdmin-3.4.5-all-languages
转移到我们 web 空间中的 web 服务器上了。我们使用我们最喜欢的 SFTP 或 FTP 软件或 web 控制面板进行传输。
我们传输 phpMyAdmin 的确切目录可能会有所不同。它可以是我们的 public_html
目录,也可以是我们通常将 web 文档传输到的另一个目录。有关要使用的确切目录或传输目录结构的最佳方式的进一步说明,我们可以咨询主机提供商的帮助热线。
传输完成后,这些文件可以从 Windows 计算机中删除,因为它们不再需要。
假设我们选择了 phpMyAdmin-3.4.5-all-languages.tar.gz
并将其直接下载到 Linux 服务器上的某个目录。我们将其移动到 web 服务器的文档根目录(例如, /var/www/html)
或其子目录之一(例如,【T2)】。然后,我们使用以下 shell 命令或使用我们的窗口管理器提供的任何图形文件提取器来提取它:
tar -xzvf phpMyAdmin-3.4.5-all-languages.tar.gz
我们必须确保目录和文件的权限和所有权适合我们的 web 服务器。web 服务器用户或组必须能够读取它们。
此处的过程类似于使用 Windows 客户端在远程服务器上安装一节中所述的过程,只是目标目录将位于我们的 DocumentRoot
(对于 Apache)或 wwwroot
(对于 IIS)下。当然,我们不需要在修改 config.inc.php
(在下一节中描述)后传输任何内容,因为目录已经在 web 空间中。
Apache 通常作为服务运行。因此,我们必须确保运行服务的用户具有正常的读取权限来访问我们新创建的目录。同样的原则也适用于 IIS,它使用 IUSR_machinename
用户。此用户必须具有目录的读取权限。您可以在目录属性的 Security/permissions
选项卡中调整权限。
在这里,我们学习如何准备和使用包含连接到 MySQL 的参数的配置文件,并且可以根据我们的需求进行定制。
在配置之前,我们可以将目录 phpMyAdmin-3.4.5-all-languages
重命名为类似 phpMyAdmin
的名称或更容易记住的名称。这样,我们和我们的用户就可以访问一个容易记住的 URL 来启动 phpMyAdmin。在大多数服务器上,URL 的目录部分是区分大小写的,因此我们应该向用户传达准确的 URL。如果服务器支持此功能,我们还可以使用符号链接。
在以下示例中,我们将假定目录已重命名为 phpMyAdmin
。
该文件包含有效的 PHP 代码,定义了大多数参数(由 PHP 变量表示),我们可以更改这些参数以根据自己的需要调整 phpMyAdmin。里面也有普通的 PHP 注释,我们可以注释我们的更改。
注意不要在文件的开头或结尾添加任何空行;这将妨碍 phpMyAdmin 的执行。
请注意,phpMyAdmin 在第一级目录中查找此文件,该目录与 index.php
所在的目录相同。
包含一个 config.sample.inc.php
文件,可以复制并重命名为 config.inc.php
作为起点。但是,建议您使用基于 web 的设置脚本(在本章中解释),以获得更舒适的配置界面。
还有另一个文件-layout.inc.php
-包含一些配置信息。由于 phpMyAdmin 提供了主题管理,因此该文件包含特定于主题的颜色和设置。每个主题有一个 layout.inc.php
,位于 themes/<themename>
中,例如 themes/pmahomme
。我们将在第 4 章中介绍对其中一些参数的修改。
在其正常行为中,phpMyAdmin 验证此文件的权限是否不允许所有人修改它。这意味着该文件不应被世界写入。此外,如果权限不正确,它会显示警告。但是,在某些情况下(例如,非 Windows 服务器上装载的 NTFS 文件系统),权限检测失败。在这些情况下,您应该将以下配置参数设置为 false:
$cfg['CheckConfigurationPermissions'] = false;
以下各节介绍了在 config.inc.php
中添加或更改参数的各种方法。
phpMyAdmin 没有自己的用户帐户;相反,它使用 MySQL 的特权系统。
现在可能是浏览的时候了 http://dev.mysql.com/doc/refman/5.1/en/privilege-system.html 学习 MySQL 特权系统的基础知识。
由于缺少配置文件,phpMyAdmin 默认显示基于 cookie 的登录面板(更多详细信息请参见第 2 章,其中解释了在默认配置下,无法使用空密码登录):
我们可以通过打开浏览器并访问 http://www.mydomain.com/phpMyAdmin
,并替换域部分和目录部分的正确值来验证这一事实。
如果我们能够登录,就意味着有一台 MySQL 服务器与 web 服务器(localhost)
在同一台主机上运行,我们刚刚建立了连接。但是,没有创建配置文件意味着我们无法通过安装 phpMyAdmin 来管理其他主机。此外,许多高级 phpMyAdmin 功能(例如,查询书签、完全关系支持、列转换等)将不会被激活。
基于 cookie 的身份验证方法使用 Blowfish 加密在浏览器 cookie 中存储凭据。当不存在配置文件时,会生成一个 Blowfish 密钥并将其存储在会话数据中,这可能会打开安全问题的大门。这就是显示以下警告消息的原因:
配置文件现在需要一个秘密密码短语(河豚\u 秘密)
此时,我们有以下选择:
- 在没有配置文件的情况下使用 phpMyAdmin
- 使用基于 web 的设置脚本生成一个
config.inc.php
文件 - 手动创建一个
config.inc.php
文件
后面两个选项将在以下部分中介绍。我们应该注意,即使我们使用基于 web 的设置脚本,我们也应该熟悉 config.inc.php
文件格式,因为设置脚本没有涵盖所有可能的配置选项。
强烈建议使用基于 web 的设置机制,以避免手动创建配置文件可能导致的语法错误。此外,由于该文件必须遵守 PHP 的语法,所以新用户在安装的这个阶段遇到问题是很常见的。
此处有一条警告:当前版本的安装界面翻译语言数量有限。
要访问设置脚本,我们必须访问http://www.mydomain.com/phpMyAdmin/setup 。初始执行时,将显示以下屏幕截图:
在大多数情况下,每个参数旁边的图标指向相应的 phpMyAdmin 官方 wiki 和文档,为您提供有关此参数及其可能值的更多信息。
如果出现显示隐藏消息并且我们单击此链接,则可能会显示先前显示的消息。
这里有三个警告。由于处理第一条消息需要更多的操作,我们将立即处理它。第二个警告鼓励您使用 ForceSSL
选项,当使用 phpMyAdmin 时,该选项将自动切换到 HTTPS(与设置阶段无关)。
让我们来讨论第三条消息-连接不安全。如果我们使用不安全的 HTTP 协议访问 web 服务器,则会显示此消息。由于我们可能会在安装阶段输入机密信息,例如用户名和密码,因此建议您至少在此阶段通过 HTTPS 进行通信。HTTPS 使用SSL(安全套接字层】对通信进行加密,使线路上无法窃听。如果我们的 web 服务器支持 HTTPS,我们可以简单地遵循建议的链接。它将重新启动安装过程,这次是通过 HTTPS。
第一个警告告诉我们 phpMyAdmin 没有找到名为 config
的可写目录。这是正常的,因为下载的工具包中没有。另外,由于目录还不存在,我们观察到界面中的保存、加载和删除**按钮是灰色的。在这个 config
目录中,我们可以:
- 在安装过程中保存配置文件的工作版本
- 加载先前准备的
config.inc.php
文件
我们不一定要创建这个配置目录,因为我们可以将安装过程生成的 config.inc.php
文件下载到我们的客户机上。然后,我们可以通过与上载 phpMyAdmin 相同的机制(比如 FTP)将其上载到第一级目录中的 phpMyAdmin。对于本练习,我们将创建此目录。
这里的原则是 web 服务器必须能够写入此目录。实现这一点的方法不止一种。这是一个可以在 Linux 服务器上工作的程序,为这个目录中的每个人添加读、写和执行权限。
cd phpMyAdmin
mkdir config
chmod 777 config
完成此操作后,我们在浏览器中刷新页面,并获得类似以下屏幕截图的屏幕:
在配置对话框中,下拉菜单允许用户选择正确的行尾格式。我们应该选择与平台**(UNIX/Linux或Windows**相对应的格式,稍后我们将在其上使用文本编辑器打开 config.inc.php
文件。
phpMyAdmin 的一个副本可以用来管理许多 MySQL 服务器,但现在我们将定义描述第一个 MySQL 服务器的参数。点击新建服务器,显示服务器配置面板。
有关这些参数的完整说明,请参见本章以下章节。现在,我们注意到安装过程检测到 PHP 支持 mysqli
扩展。因此,这是默认选择的。这个扩展是 PHP 用来与 MySQL 通信的编程库。
我们假设我们的 MySQL 服务器位于 localhost
上。因此,我们保持该值和所有建议值不变,但以下情况除外:
- 基本设置|此服务器的详细名称-我们输入我的服务器
- 身份验证|配置身份验证的用户-我们删除根目录并将其保留为空,因为默认身份验证类型为
cookie
,它会忽略此处输入的用户名
您可以看到,任何从默认值更改的参数都以不同的颜色显示。此外,还有一个小箭头可用,其目的是将字段恢复为其默认值。因此,您可以自由地尝试更改参数,知道您可以轻松地恢复到建议的值。此时,基本设置面板应类似于以下屏幕截图:
然后点击保存返回概览面板。此保存操作尚未将任何内容保存到磁盘;更改保存在内存中。我们收到警告,已生成河豚密钥。然而,我们不必记住它,因为它在登录过程中没有输入,而是在内部使用。出于好奇,您可以切换到功能面板,点击安全选项卡查看生成的密钥。让我们回到概览面板。现在,我们的安装过程知道了一台 MySQL 服务器,并且有链接可以让我们编辑或删除这些服务器设置,如下面的截图所示:
我们可以通过显示按钮查看生成的配置行;然后,我们可以使用本章后面的部分对一些配置参数的描述中给出的解释来分析这些参数。
此时,此配置仍在内存中,因此我们需要保存它。这是通过概览面板上的保存按钮完成的。它将 config.inc.php
保存在我们之前创建的特殊 config
目录中。这是一个严格用于配置目的的目录。如果由于任何原因无法创建此 config
目录,您只需点击下载按钮下载文件,并将其上传到安装 phpMyAdmin 的 web 服务器目录。
最后一步是将 config.inc.php
从 config
目录复制到包含 index.php
的顶级目录。通过复制此文件,它将由用户而不是 web 服务器拥有,从而确保可以进行进一步修改。此复制可以通过 FTP 或以下命令完成:
cd config
cp config.inc.php ..
作为安全措施,在配置步骤未完成之前,建议您更改 config
目录上的权限,例如使用以下命令:
chmod ugo-rwx config
这是为了阻止在此目录中进行任何未经授权的读写。
可以使用这些基于 web 的设置页面设置其他配置参数。为此,我们必须:
- 启用对
config
目录的读写访问。 - 在那里复制
config.inc.php
。 - 确保为 web 服务器提供对此文件的读写访问权限。
- 启动基于 web 的设置工具。
配置步骤完成后,建议完全删除 config
目录,因为该目录仅由基于 web 的安装脚本使用。如果 phpMyAdmin 检测到该目录仍然存在,则会在主页上显示以下警告(参见第 3 章:
安装脚本使用的目录配置仍然存在于 phpMyAdmin 目录中。一旦配置了 phpMyAdmin,您就应该删除它。
我们邀请您仔细阅读其余的菜单,以了解可用的配置可能性,无论是现在还是以后,当我们讨论相关主题时。
为了使本书的文本更轻松,我们将在以下章节中只参考参数的文本值。
我们可以使用我们最喜欢的文本编辑器从头开始创建这个文本文件,或者使用 config.sample.inc.php
作为起点。确切的过程取决于我们使用的客户端操作系统。我们可以参考下一节了解更多信息。
可位于 config.inc.php
内的所有可能配置参数的默认值在 libraries/config.default.php
中定义。我们可以查看此文件,以查看所使用的语法以及有关配置的进一步注释。请参阅本章升级 phpMyAdmin一节中有关此文件的重要说明。
此文件包含特殊字符(Unix 样式的行尾)。因此,我们必须用理解这种格式的文本编辑器打开它。如果我们使用错误的文本编辑器,该文件将显示非常长的行。最好的选择是标准的 PHP 编辑器,如 NetBeans 或 Zend Studio for Eclipse。另一种选择是写字板、Metapad 或 UltraEdit。
每次修改 config.inc.php
文件时,都必须将其再次传输到我们的 web 空间。此传输通过 FTP 或 SFTP 客户端完成。您可以选择使用独立的 FTP/SFTP 客户端,如 FileZilla,或者如果 PHP 编辑器支持此功能,则可以直接通过 FTP/SFTP 进行保存。
在本章和下一章中,我们将集中讨论处理连接和身份验证的参数。其他参数将在解释相应特征的章节中讨论。
我们要看的第一个参数是 $cfg['PmaAbsoluteUri'] = ''
;
有时候,phpMyAdmin 需要发送 HTTP Location
头,并且必须知道其安装点的绝对 URI。RFC 2616 第 14.30 节要求在这种情况下使用绝对 URI。
在大多数情况下,当 phpMyAdmin 尝试自动检测正确的值时,我们可以将该值保留为空。如果我们稍后浏览一个表,然后编辑一行,然后单击保存,我们将收到来自浏览器的错误消息,例如,此文档不存在。这意味着 phpMyAdmin 为了到达预期页面而构建的绝对 URI 是错误的,这表明我们必须手动在该参数中输入正确的值。
例如,我们将其更改为:
$cfg['PmaAbsoluteUri'] = 'http://www.mydomain.com/phpMyAdmin/';
文件的下一部分包含特定于服务器的配置,每个配置都从以下代码段开始:
$i++;
$cfg['Servers'][$i]['host'] = '';
如果我们只检查正常的服务器参数(其他参数在本章的安装 phpMyAdmin 配置存储一节中介绍),我们会看到一个类似于每个服务器的以下代码块的部分:
$i++;
$cfg['Servers'][$i]['host'] = '';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['compress'] = FALSE;
$cfg['Servers'][$i]['controluser'] = '';
$cfg['Servers'][$i]['controlpass'] = '';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['only_db'] = '';
$cfg['Servers'][$i]['hide_db'] = '';
$cfg['Servers'][$i]['verbose'] = '';
在本节中,我们必须在 $cfg['Servers'][$i]['host']
中输入 MySQL 服务器的主机名或 IP 地址,例如 mysql.mydomain.com
或 localhost
。如果此服务器在非标准端口或套接字上运行,我们将在 $cfg['Servers'][$i]['port']
或 $cfg['Servers'][$i]['socket']
中填写正确的值。有关插座的详细信息,请参见连接类型、插座和端口部分。
phpMyAdmin 界面中显示的服务器名称将是在'host'
中输入的名称,除非我们在以下参数中输入非空值,例如:
$cfg['Servers'][$i]['verbose'] = 'Test server';
因此,此功能可用于显示用户在登录面板和主页上看到的不同服务器主机名,尽管真实的服务器名可作为用户定义的一部分(例如主页上的 root@localhost)
。
PHP 用于与 MySQL 服务器通信的传统机制(在 5 版之前的 PHP 中可用)是 mysql
扩展。这个扩展在 PHP5 中仍然可用。然而,一个名为 mysqli
的新扩展已经开发出来,应该是 PHP5 的首选扩展,因为它提高了性能,并且支持 MySQL 系列 4.1.x 的全部功能。此扩展设计用于 MySQL 版本 4.1.3 及更高版本。由于 phpMyAdmin 支持这两种扩展,因此我们可以为特定服务器选择其中一种。我们在 $cfg['Servers'][$i]['extension']
中指明了要使用的扩展名。使用的默认值为 mysqli
。
如果服务器在 localhost
上, mysql
和 mysqli
扩展都会自动使用套接字连接 MySQL。考虑以下配置:
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
connect_type
的默认值为 tcp
。但是,扩展将使用套接字,因为它得出结论认为,这更有效,因为 host
是 localhost
。所以在这种情况下,我们可以使用 tcp
或 socket
作为 connect_type
。要强制真正的 TCP 连接,我们可以在 host
参数中指定 127.0.0.1
而不是 localhost
。由于 socket
参数为空,扩展将尝试默认套接字。如果 php.ini
中定义的默认套接字与分配给 MySQL 服务器的实际套接字不对应,我们必须将套接字名称(例如, /tmp/mysql.sock)
放在 $cfg['Servers'][$i]['socket']
中。
如果主机名不是 localhost
,则会发生 TCP 连接;在这种情况下,在特殊端口 3307
上。但是,将端口值保留为空将使用默认的 3306
端口:
$cfg['Servers'][$i]['host'] = 'mysql.mydomain.com';
$cfg['Servers'][$i]['port'] = '3307';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
用于 PHP 和 MySQL 之间通信的协议允许压缩模式。使用此模式可以提供更好的效率。要利用此模式,只需指定:
$cfg['Servers'][$i]['compress'] = TRUE;
另一个重要参数(不是特定于服务器的,但适用于所有服务器定义)是 $cfg['PersistentConnections']
。对于我们使用 mysql
扩展连接的每台服务器,当设置为 TRUE
时,此参数指示 PHP 保持与 MySQL 服务器的连接打开。这加快了 PHP 和 MySQL 之间的交互。但是,在 config.inc.php
中默认设置为 FALSE
,因为持久连接通常会导致服务器上的资源消耗(您会发现 MySQL 拒绝新连接)。因此,该选项甚至不适用于 mysqli
扩展。因此,如果您正在连接此扩展,在此处将其设置为 TRUE
将无效。
定义控件用户有两个目的:
- 在使用
--skip-show-database
运行的 MySQL 服务器上,控制用户允许使用多用户身份验证,即使使用此选项运行的服务器并不常见。这方面在第 2 章中进行了描述。 - 在所有版本的 MySQL 服务器上,该用户必须能够使用 phpMyAdmin 的高级功能。
出于身份验证的目的, controluser
是一个特殊用户(我们为其选择的通常名称是 pma)
,他有权读取特殊 mysql
数据库中的某些字段(包含所有用户定义)。phpMyAdmin 使用此特殊 controluser
发送查询仅用于身份验证的特定需要,不用于正常操作。创建控件用户的命令可在 phpMyAdmin 的 Documentation.html
中找到,并且可能因版本而异。此文档包含最新的命令。
当我们的 controluser
在 MySQL 服务器中创建时,我们按照下面的示例填写参数,用适当复杂的密码替换 xxx
:
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'xxx';
这里适用标准密码准则。请参考http://en.wikipedia.org/wiki/Password_strength 征求意见。
除了基本的 MySQL 数据库维护外,phpMyAdmin 还提供了高级功能,我们将在以下章节中发现这些功能。这些功能要求安装 phpMyAdmin 配置存储。
配置存储由一组由 phpMyAdmin 在后台使用的表组成。它们包含元数据,其中包含支持特殊功能(如查询书签和数据转换)的信息。此外,对于使用不支持外键的存储引擎的表,表之间的关系保留在此配置存储中。元数据由 phpMyAdmin 根据我们从接口执行的操作生成和维护。
有两个地方可以存放这些表:
- 用户的数据库,以方便拥有数据库的每个 web 开发人员从这些功能中受益。
- 一个名为pmadb(phpMyAdmin数据库)的专用数据库。在多用户安装中,许多用户可以访问此数据库,同时保持元数据的私有性。
**由于此存储在默认情况下不存在,并且 phpMyAdmin 团队希望升级它,因此该界面在主页上显示以下通知消息:
可使用以下参数禁用此消息(默认设置为 FALSE):
$cfg['PmaNoRelation_DisableWarning'] = TRUE;
即使只缺少部分配置存储,也会显示上一条错误消息。当然,在一个新安装上,所有部件都缺少我们的数据库尚未听说 phpMyAdmin,需要配备此配置存储。在上一个屏幕截图中的此处链接之后,会出现一个面板,说明 pmadb
以及应该是其一部分的表缺失或未定义。
必须认识到,只有满足以下两个条件,配置存储器才能正常工作:
config.inc.php
中给出了正确的定义- 创建相应的表(可能还有数据库)
为了创建与当前版本的 phpMyAdmin 相匹配的必要结构,phpMyAdmin 安装目录的 scripts
子目录中提供了一个名为 create_tables.sql
的命令文件。然而,在理解单用户安装或多用户安装的可能选择之前,我们不应该盲目地执行它。
在随后的章节中,我们将假设已选择多用户安装。
即使系统管理员只允许我们使用一个数据库,我们仍然可以使用 phpMyAdmin 的所有高级功能。在此设置中,我们将使用现有数据库存储元数据表。
我们需要修改 scripts/create_tables.sql
文件的本地副本,用所有需要的表填充数据库。它们将具有前缀 pma_
,以便于识别。我们需要删除以下行:
CREATE DATABASE IF NOT EXISTS `phpmyadmin`
DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
USE phpmyadmin;
这样做是因为我们不会使用 phpmyadmin
数据库,而是使用我们自己的数据库。接下来,我们应该在 phpMyAdmin 中打开我们自己的数据库。我们现在已经准备好执行脚本了。有两种方法可以做到这一点:
- 由于我们的编辑器中已经有了脚本,我们可以复制这些行并将它们粘贴到SQL页面的查询框中。更多详情请参见第 11 章。
- 另一种方法是使用第 7 章所示的导入技术。我们选择了刚刚修改的
create_tables.sql
脚本。
创建完成后,导航面板会向我们显示特殊的 pma_
表和普通表。
现在是调整 config.inc.php
中所有配置存储相关参数的时候了。如本章所示,通过设置脚本或粘贴 config.sample.inc.php
文件中的适当行,可以轻松完成此操作。数据库是我们自己的,表名是刚刚创建的:
$cfg['Servers'][$i]['pmadb'] = 'mydatabase';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
由于表名区分大小写,因此必须使用与安装脚本创建的表相同的名称。只要在数据库中相应地更改表名,我们就可以自由地更改表名(请参见列出的配置指令的右侧部分)。
pmadb
和每个表都有下面列出的特定功能:
作用
|
描述
|
解释
|
| --- | --- | --- |
| pmadb
| 定义所有表所在的数据库 | 本章 |
| bookmarktable
| 包含查询书签 | 第 14 章 |
| relation
| 定义表间关系,如 phpMyAdmin 的许多功能中所用 | 第 10 章 |
| table_info
| 包含显示字段 | 第 10 章 |
| table_coords
和 pdf_pages
| 包含以 PDF 格式绘制关系架构所需的元数据 | 第 15 章 |
| column_info
| 用于列注释和基于 MIME 的转换 | 第 16 章 |
| history
| 包含 SQL 查询历史信息 | 第 11 章 |
| tracking
| 包含与跟踪表相关的元数据和实际 SQL 语句 | 第 18 章 |
| designer_coords
| 保存设计器功能使用的坐标 | 第 10 章 |
| userconfig
| 保存用户的首选项 | 第三章 |
在每个 phpMyAdmin 版本之间,基础设施可能会得到增强。更改在 Documentation.html
中解释。这就是为什么 phpMyAdmin 有各种检查来确定表的结构。如果我们知道我们使用的是最新的结构, $cfg['Servers'][$i]['verbose_check']
可以设置为 FALSE
以避免检查,从而略微提高 phpMyAdmin 的速度。
在这个设置中,我们将有一个独特的数据库-pmadb
-来存储元数据表。我们的控件用户将拥有此数据库的特定权限。每个用户将使用其登录名和密码访问其数据库。但是,每当 phpMyAdmin 本身访问 pmadb
以获取一些元数据时,它将使用控件用户的权限。
只有 MySQL 系统管理员有权将权限分配给另一个用户(此处为 pma
用户),才能设置多用户安装。
我们首先确保已创建控件用户 pma
,并且其在 config.inc.php
中的定义是适当的。然后我们将 scripts/create_tables.sql
复制到本地工作站并进行编辑。我们将替换以下行:
-- GRANT SELECT, INSERT, DELETE, UPDATE ON `phpmyadmin`.* TO
-- 'pma'@localhost;
使用这些选项,删除注释字符(双破折号):
GRANT SELECT, INSERT, DELETE, UPDATE ON `phpmyadmin`.* TO
'pma'@localhost;
然后我们通过导入来执行此脚本(请参阅第 7 章。最终的效果是创建 phpmyadmin
数据库,为用户 pma
分配适当的权限,并用所有必要的表填充数据库。
最后一步是调整 config.inc.php
中与关系特征相关的所有参数。请参考单用户安装部分,除了 pmadb
参数中的数据库名称,如下代码段所示:
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
安装现已完成。我们将在接下来的章节中测试这些特性。我们可以通过注销 phpMyAdmin 进行快速检查,然后登录并显示主页;警告信息应该消失了。
通常,升级只是将较新版本安装到一个单独的目录中,并将以前版本的 config.inc.php
复制到新目录中。
一个升级路径或第一个安装路径,不应该采取而应该采取的方式,将 libraries/config.default.php
复制到 config.inc.php
。这是因为默认配置文件是特定于版本的,不能保证在将来的版本中工作。
新参数在不同版本之间显示。它们记录在 Documentation.html
中,并在 libraries/config.default.php
中定义。如果配置参数在 config.inc.php
中不存在,将使用其在 libraries/config.default.php
中的值。因此,如果默认值适合我们,我们不必将其包括在 config.inc.php
中。
根据使用的主题,必须特别注意传播我们可能对 layout.inc.php
文件所做的更改。如果我们将自己的主题添加到结构中,我们将不得不复制自定义主题子目录。
本章介绍了 PHP/MySQL 在 web 应用程序中的流行情况。本章还概述了为什么 phpMyAdmin 被认为是从 web 接口 MySQL 的主要应用程序。然后讨论了安装 phpMyAdmin 的常见原因、从主站点下载 phpMyAdmin 的步骤、基本配置、将 phpMyAdmin 上载到 web 服务器以及升级。
现在已经完成了基本安装,下一章将通过探索身份验证和安全方面深入讨论配置主题。****