Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  Security  /  Access Control and Account Management

8.2 访问控制和帐户管理

MySQL 支持创建账户,允许客户端用户连接到服务器并访问服务器管理的数据。MySQL 权限系统的主要功能是验证从给定主机连接的用户,并将该用户与数据库上的权限(例如 SELECTINSERTUPDATEDELETE)相关联。其他功能包括授予管理操作权限的能力。

为了控制哪些用户可以连接,可以为每个帐户分配身份验证凭据,例如密码。MySQL帐户的用户界面由SQL语句组成,例如创建用户授予撤销。请参见第 15.7.1 节,“帐户管理语句”

MySQL权限系统确保所有用户只能执行允许他们执行的操作。作为用户,当你连接到MySQL服务器时,你的身份由你连接的主机你指定的用户名决定。连接后发出请求时,系统会根据你的身份和你想要做什么来授予权限。

MySQL在识别你时会考虑你的主机名和用户名,因为没有理由假设给定的用户名在所有主机上都属于同一个人。例如,从 office.example.com 连接的用户 joe 不一定是与从 home.example.com 连接的用户 joe 同一个人。MySQL通过允许你区分碰巧具有相同名称的不同主机上的用户来处理这个问题:你可以为来自 office.example.comjoe 的连接授予一组权限,为来自 home.example.comjoe 的连接授予不同的权限。要查看给定帐户具有的权限,请使用显示授予语句。例如:

SHOW GRANTS FOR 'joe'@'office.example.com';
SHOW GRANTS FOR 'joe'@'home.example.com';

在内部,服务器将权限信息存储在 mysql 系统数据库的授予表中。MySQL服务器在启动时将这些表的内容读入内存,并根据授予表的内存副本做出访问控制决策。

当你运行连接到服务器的客户端程序时,MySQL访问控制涉及两个阶段:

阶段 1: 服务器根据你的身份以及你是否可以通过提供正确的密码来验证你的身份来接受或拒绝连接。

阶段 2: 假设你可以连接,服务器会检查你发布的每个语句,以确定你是否有足够的权限来执行它。例如,如果你尝试从数据库中的表中选择行或从数据库中删除表,服务器会验证你是否对该表具有选择权限或对该数据库具有删除权限。

若要更详细地了解每个阶段发生的情况,请参阅第 8.2.6 节,“访问控制,阶段 1:连接验证”第 8.2.7 节,“访问控制,阶段 2:请求验证”。若要帮助诊断权限相关问题,请参阅第 8.2.22 节,“MySQL 连接故障排除”

如果你的权限在你连接时被更改(无论是你自己还是其他人),这些更改不一定会立即对你的下一条语句生效。有关服务器重新加载授权表的条件的详细信息,请参阅第 8.2.13 节,“权限更改何时生效”

MySQL 权限系统有一些你不能做的事情:

  • 你不能明确指定应拒绝给定用户的访问权限。也就是说,你不能明确匹配用户然后拒绝连接。

  • 你不能指定用户有权在数据库中创建或删除表,但无权创建或删除数据库本身。

  • 密码全局应用于帐户。你不能将密码与特定对象(如数据库、表或例程)相关联。