Skip to content

Latest commit

 

History

History
267 lines (141 loc) · 18.4 KB

File metadata and controls

267 lines (141 loc) · 18.4 KB

十九、管理 MySQL 服务器

本章讨论系统管理员如何使用 phpMyAdmin 服务器管理功能进行日常用户帐户维护、服务器验证和服务器保护。还讨论了非管理员如何从 phpMyAdmin 获取服务器信息。

服务器管理主要通过 Server视图完成,该视图可通过 phpMyAdmin 主页上可用的菜单选项卡访问。

管理用户及其权限

特权页面(仅当我们以特权用户身份登录时可见)包含管理 MySQL 用户帐户的对话框。它还包含用于管理全局、数据库和表级别权限的对话框。此页面具有层次结构。编辑用户权限时,我们可以看到全局权限以及特定于数据库的权限。然后,在查看用户的特定于数据库的权限时,我们可以查看和编辑该用户对此数据库中任何表的权限。

用户概述

进入权限页面时显示的第一个页面称为用户概览。这将显示所有用户帐户及其全局权限摘要,如以下屏幕截图所示:

The user overview

从这个页面,我们可以:

  • 通过该用户的编辑权限链接编辑用户权限
  • 通过该用户的导出链接导出用户的权限定义
  • 通过删除所选用户对话框,使用复选框删除用户
  • 进入添加新用户对话框可用的页面

显示的用户列表包含具有以下特征的列:

|

|

特征

| | --- | --- | | 用户 | 我们正在定义的用户帐户。 | | 主机 | 此用户帐户将从其连接到 MySQL 服务器的计算机名或 IP 地址。此处的**%值表示所有主机。 | | 密码 | 如果定义了密码,则包含是**,如果未定义密码,则包含。从 phpMyAdmin 的界面或直接查看 mysql.user表无法看到密码本身,因为它是用单向散列算法加密的。 | | 全球特权 | 用户的全局权限列表。 | | 授予 | 包含如果用户可以将其权限授予他人。 | | 动作 | 包含编辑此用户权限或导出权限的链接。 |

出口特权

当我们需要在另一台 MySQL 服务器上创建具有相同密码和权限的用户时,此功能非常有用。为用户marc点击导出生成以下面板:

Exporting privileges

然后,只需选择这些GRANT语句并将它们粘贴到另一个 phpMyAdmin 窗口的 SQL 框中,我们已经登录到另一个 MySQL 服务器。

特权重新加载

用户概览页面底部显示此消息:

Note: phpMyAdmin gets the users' privileges directly from MySQL's privilege tables. The content of these tables may differ from the privileges the server uses, if they have been changed manually. In this case, you should reload the privileges before you continue.

此处,文本重新加载权限可点击。有效权限(服务器访问决策所依据的权限)是位于服务器内存中的权限。从用户概述页面进行的权限修改在 mysql数据库的内存和磁盘中进行。直接修改 mysql数据库不会立即生效。重新加载特权操作从数据库读取特权,并使其在内存中生效。

添加用户

添加新用户链接打开一个对话框,用于创建用户帐户。首先,我们将看到一个面板,在该面板中我们将描述帐户本身,如以下屏幕截图所示:

Adding a user

添加新用户对话框的第二部分是指定用户的全局权限,该权限应用于整个服务器(参见本章分配全局权限部分),如下图所示:

Adding a user

输入用户名

用户名菜单提供两种选择。我们可以选择使用文本字段:并在框中输入用户名,也可以选择任何用户创建匿名用户(空白用户)。有关匿名用户的更多详细信息,请访问http://dev.mysql.com/doc/refman/5.5/en/connection-access.html 。让我们选择使用文本字段:并输入账单

分配主机值

默认设置为任意主机,主机值为**%。本地选项表示 localhost。使用主机表选项(在主机字段中创建一个空值)意味着在 mysql.host表中查找特定于数据库的权限。选择使用文本字段:允许我们输入所需的确切主机值。让我们选择本地**。

设置密码

即使可以创建没有密码的用户(通过选择无密码选项),但最好有密码。我们必须输入两次(因为我们看不到输入的内容)以确认预期的密码。安全密码应包含八个以上的字符,并且应包含大小写字符、数字和特殊字符的混合。因此,建议让 phpMyAdmin 生成一个密码,这在支持 JavaScript 的浏览器中是可能的。在生成密码对话框中,点击生成按钮,在屏幕上输入随机密码(明文),并用生成的密码填充密码重新输入字段。此时,我们应该注意密码,以便将其传递给用户。

了解数据库创建权限

一种常见的约定是向用户分配与该用户同名的数据库的权限。为此,用户的数据库部分提供了创建同名数据库并授予所有特权单选按钮。选中此复选框将通过创建数据库(如果数据库不存在)和分配相应的权限来自动执行该过程。请注意,使用此方法,每个用户将被限制为一个数据库(用户 bill,数据库 bill)

另一种可能性是允许用户创建与用户名前缀相同的数据库。因此,另一个选项**授予通配符名称的所有权限(用户名\ %)**通过分配通配符权限来执行此功能。这样,用户 bill就可以创建数据库 bill_test, bill_2, bill_payroll,以此类推;在这种情况下,phpMyAdmin 不会预创建数据库。

分配全局权限

全局权限决定用户对所有数据库的访问权限。因此,这些有时被称为超级用户权限。除非有充分的理由,否则普通用户不应该拥有这些特权。此外,如果拥有全局权限的用户帐户受到损害,损害可能会更大。

如果我们真的要创建一个超级用户,我们将选择他或她所需要的所有全局权限。这些权限进一步分为数据、结构管理组。

在我们的示例中,法案将不具有任何全局特权。

限制使用的资源

我们可以限制此用户在此服务器上使用的资源(例如,每小时的最大查询数)。零意味着没有限制。我们不会对条例草案施加任何资源限制。

以下屏幕截图显示了点击创建用户创建此用户定义之前的屏幕状态(剩余字段设置为默认值):

Limiting the resources used

编辑用户档案

每当我们在用户概述页面中单击用户的编辑权限时,就会出现用于编辑用户配置文件的页面。让我们为新创建的用户账单试一试。本页共有四个部分,每个部分都有自己的Go按钮。因此,每个部门都是独立运作的,有着不同的目的。

编辑全局权限

用于编辑用户权限的部分与添加新用户对话框的外观相同,用于查看和更改全局权限。

分配数据库特定权限

在本节中,我们将定义用户有权访问的数据库,以及用户对这些数据库的确切权限。

Assigning database-specific privileges

如前一个屏幕截图所示,我们看到,因为我们还没有定义任何特权。定义数据库权限有两种方法。首先,我们可以从下拉菜单中选择一个现有数据库,如下图所示:

Assigning database-specific privileges

这仅为所选数据库分配权限。其次,我们也可以选择**使用文本字段:**并输入数据库名称。我们可以输入一个不存在的数据库名称,以便用户以后可以创建它(前提是我们在下一个面板中给他/她 CREATE权限)。我们还可以使用特殊字符,例如下划线和百分号作为通配符。

例如,在这里输入比尔可以创建比尔数据库,输入比尔%可以创建任何以比尔开头的名称的数据库。例如,我们将输入账单并点击Go

下一个屏幕用于设置票据在票据数据库上的权限,并创建特定于表的权限。

要了解有关特定特权含义的更多信息,我们可以将鼠标悬停在特权名称上(该名称始终为英语),有关此特权的说明将以当前语言显示。我们在此数据库上为票据授予选择、插入、更新、删除、创建、更改、索引删除权限。然后点击Go

Assigning database-specific privileges

在分配了特权之后,接口将保持在相同的位置,以便我们可以进一步细化这些特权。目前无法分配特定于表的权限,因为数据库尚不存在。

要返回到法案的一般特权页面,请单击**法案@‘本地主机’**标题。

这让我们回到了以下熟悉的页面,除了一个部分的更改:

Assigning database-specific privileges

我们看到用户账单账单数据库上已有的权限(我们可以点击编辑权限链接进行编辑,也可以点击撤销链接进行撤销),我们可以在另一个数据库上为账单添加权限。我们还可以看到,账单账单数据库中没有表专有权限。

更改密码

更改密码对话框是编辑用户页面的一部分,我们可以使用它更改比尔的密码,也可以删除它。删除密码将使bill无需密码即可登录。该对话框提供了密码散列选项的选择,建议保留默认的**MySQL 4.1+**散列。有关哈希的更多详细信息,请访问http://dev.mysql.com/doc/refman/5.1/en/password-hashing.html

更改登录信息或复制用户

此对话框可用于更改用户的登录信息,或将其登录信息复制到新用户。例如,假设 Bill 打电话告诉我们他更喜欢登录名billy而不是Bill。我们只需在用户名中添加一个y,然后从用户表单选按钮中选择删除旧用户名,如下图所示:

Changing login information or copying a user

点击Go 后, mysql数据库中不再存在票据。此外,他的所有特权,包括对法案数据库的特权,将被转移到新用户比利。然而,法案的用户定义仍将存在于内存中,因此仍然有效。如果我们选择了从用户表中删除旧的,然后重新加载特权选项,则账单的用户定义将立即失效。

或者,我们可以基于账单创建另一个用户,使用保留旧的选项。我们可以通过选择不更改密码选项将密码传输给新用户,或者通过输入两次新密码来更改密码。**撤销所有活动特权…**选项立即终止此用户的有效当前特权,即使他或她当前已登录。

删除用户

权限页面的用户概述部分删除用户。我们选择要删除的用户。然后(在删除所选用户】中,我们可以选择删除与用户同名的数据库选项,删除以我们删除的用户命名的任何数据库。点击Go可有效删除所选用户。

数据库信息

数据库页面旨在创建新数据库,并快速获取每个数据库的权限信息。或者,它还可以用于获取这些数据库的全局统计信息,而无需单击导航面板中的每个数据库。进入数据库页面,会看到已有数据库列表:

Database information

我们还看到一个启用统计链接。默认情况下,不启用统计信息,因为计算所有数据库中所有表的数据和索引大小可能会消耗宝贵的 MySQL 服务器资源。

启用统计

如果我们点击启用统计链接,会出现一个修改页面。对于每个数据库,我们将获得该数据库中表的默认排序规则,以及数据库中表的数量和所有表的总行数。接下来,给出关于表的数据部分使用的空间的信息,然后是所有索引占用的空间,以及所有表的总空间。接下来,在开销列标题下显示通过优化该数据库中的一些表可以回收的空间。最后,我们可以看到复制信息,后面是检查权限链接:

Enabling statistics

统计数据整理

默认情况下,统计信息列表按数据库名称升序排序。如果我们需要查找表最多的数据库或占用空间最多的数据库,只需点击总计列标题即可对列表进行相应排序。第二次单击将反转排序顺序。

检查数据库权限

点击检查权限图标或链接,显示特定数据库的所有权限。此处可能会显示用户的全局权限,因为它也允许用户访问该数据库。我们还可以看到特定于此数据库的特权。一个编辑权限链接将我们带到另一个页面,该页面用于编辑用户的权限。

Checking the database privileges

我们注意到该面板还包含添加新用户链接。单击此链接可以方便地创建对我们当前正在检查的数据库具有权限的用户。实际上,从该链接进入用户创建面板后,默认情况下会显示并选择数据库创建或权限授予对话框中的第四个选项,如以下屏幕截图所示:

Checking the database privileges

删除所选数据库

要删除一个或多个数据库,我们进入 Server视图,点击数据库菜单选项卡;在要删除的数据库名称旁边打上复选标记;然后点击旁边的下拉链接,选择。然后我们得到一个确认屏幕。无法选择两个数据库(mysql和虚拟 information_schema);第一个是为了避免犯大错误并删除我们的所有帐户,第二个是不能选择的,因为这不是一个真正的数据库。

这是一个不应掉以轻心的操作,最好先将整个数据库作为备份导出。

服务器信息

管理员和普通用户都可以从监视服务器和获取有关其一般配置和行为的信息中获益。状态、变量流程菜单选项卡可用于获取 MySQL 服务器的信息,或对特定流程进行操作。

正在验证服务器状态

服务器状态统计信息反映 MySQL 服务器的总活动,包括(但不限于)由 phpMyAdmin 发送的查询生成的活动。

点击状态菜单选项卡,生成服务器的运行时信息。该页面有几个部分。首先,我们获得关于运行时间和启动时间的信息。然后我们得到流量和连接的总值和平均值(其中,ø表示平均值),如以下屏幕截图所示:

Verifying server status

接下来,将显示有关查询的统计信息(部分显示在屏幕截图中)。每小时、每分钟和每秒钟的平均查询数可以很好地指示服务器负载。

查询统计信息之后是关于每个执行的 MySQL 语句的统计信息,包括:

  • 每个语句执行的绝对次数
  • 每小时平均执行量
  • 与所有语句相比,此语句的执行百分比

呈现顺序按利用率百分比递减;在下面的屏幕截图中,我们看到set option语句是该服务器接收最多的语句,占37.40%:

Verifying server status

查询统计后,点击显示查询图表链接,会产生一张图表,显示该服务器上流行的查询类型,如下图所示:

Verifying server status

根据 MySQL 版本的不同,还会显示包含服务器信息的许多其他部分。

服务器变量

变量页面显示 MySQL 服务器的各种设置,可以在 my.cnfMySQL 配置文件中定义。无法从 phpMyAdmin 中更改这些值。

服务器进程

超级用户和普通用户均可使用流程页面。普通用户只能看到属于自己的进程,而超级用户可以看到所有进程。

此页面列出服务器上的所有活动进程。有一个Kill链接,允许我们终止一个特定的进程,如下面的屏幕截图所示:

Server processes

本例只有两个正在运行的进程,包括由 SHOW PROCESSLIST命令本身创建的进程。此进程不可终止,因为当我们看到页面时,它不再运行。在繁忙的服务器上,我们会看到更多进程在运行。

存储引擎

有关各种存储引擎的信息以两级格式提供。首先,引擎选项卡显示当前 MySQL 版本可能的引擎概览。可单击此服务器上启用的引擎的名称。

Storage engines

其次,单击一个引擎名称会显示有关其设置的详细面板。将鼠标悬停在上标中的数字上会显示有关特定设置的更多信息。

可用字符集和排序规则

主页上的字符集菜单选项卡打开字符集页面的 Server视图,其中列出了 MySQL 服务器支持的字符集和排序规则。每个字符集的默认排序规则以不同的背景色显示(使用 $cfg['BrowseMarkerColor'])中定义的行标记颜色)

检查二进制日志

如果 MySQL 的二进制日志记录在我们的服务器上处于活动状态, Server视图中的菜单会发生变化,从而出现二进制日志选项卡。此选项卡通过 SHOW BINLOG EVENTS命令提供对接口的访问。此命令生成已更新服务器上数据的 SQL 语句列表。这个列表可能非常庞大,目前 phpMyAdmin 没有使用分页技术限制其显示。因此,我们可能会达到浏览器的内存限制,这取决于我们使用的特定浏览器。

在下面的屏幕截图中,我们选择要检查的二进制日志(除非服务器只有一个二进制日志),然后显示语句:

Examining binary logs

总结

本章介绍了系统管理员可用的各种功能,如用户帐户管理、权限管理、数据库权限检查和服务器状态验证。适当了解 MySQL 特权系统对于充分维护 MySQL 服务器至关重要,本章将介绍以用户及其特权概念为中心的练习。

接下来是附录“故障排除和支持”,描述了在何处获得支持以使 phpMyAdmin 高效运行。