MySQL 赋权 flush privileges

1. 背景介绍

在 MySQL 数据库中,为了保证数据的安全性和隐私,通常会对用户进行权限控制。MySQL 提供了 GRANTREVOKE 两个命令,用于分配和撤销用户的权限。

当我们修改了用户权限或者创建了新的用户时,MySQL 服务器不会立即更新权限,需要手动执行 FLUSH PRIVILEGES 命令来刷新权限,使修改后的权限生效。

本文将介绍如何在 MySQL 中进行权限赋予,并详细解释 FLUSH PRIVILEGES 的作用。

2. MySQL 权限赋予

2.1 创建新用户

在 MySQL 中,可以使用 CREATE USER 命令创建新用户。下面是创建一个名为 newuser 的用户,并设置密码为 password 的示例代码:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

2.2 赋予用户权限

在创建用户之后,我们需要为用户分配相应的权限。可以使用 GRANT 命令来赋予用户权限。下面是赋予用户 newuser 所有数据库的所有权限的示例代码:

GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';

上述命令中的 *.* 表示所有数据库的所有表,'newuser'@'localhost' 表示用户名为 newuser 的用户只能通过 localhost 主机连接。

2.3 撤销用户权限

如果需要撤销用户的权限,可以使用 REVOKE 命令。下面是撤销用户 newuser 所有数据库的所有权限的示例代码:

REVOKE ALL PRIVILEGES ON *.* FROM 'newuser'@'localhost';

3. FLUSH PRIVILEGES 的作用

当我们通过 GRANTREVOKE 命令修改了用户权限时,MySQL 服务器不会立即更新权限,需要手动执行 FLUSH PRIVILEGES 命令来刷新权限。

FLUSH PRIVILEGES 命令的作用是重新加载 grant tables,使数据库服务器重新读取权限表中的内容,并使修改后的权限生效。

下面是执行 FLUSH PRIVILEGES 命令的示例代码:

FLUSH PRIVILEGES;

4. 示例

假设我们有一个名为 employees 的数据库,其中包含一个名为 employees_info 的表。现在我们需要创建一个新用户,并赋予该用户对 employees 数据库的 SELECT 权限。

首先,我们创建新用户 readonly,并设置密码为 password

CREATE USER 'readonly'@'localhost' IDENTIFIED BY 'password';

接下来,我们赋予用户 readonlyemployees 数据库的 SELECT 权限:

GRANT SELECT ON employees.* TO 'readonly'@'localhost';

最后,我们执行 FLUSH PRIVILEGES 命令来使修改后的权限生效:

FLUSH PRIVILEGES;

现在,用户 readonly 就可以通过 localhost 主机连接到 MySQL 数据库,并且只有对 employees 数据库的 SELECT 权限。

总结

在 MySQL 中,我们可以使用 GRANT 命令为用户赋予权限,使用 REVOKE 命令撤销用户的权限。在修改完权限后,可以使用 FLUSH PRIVILEGES 命令来刷新权限,使修改生效。

使用这些命令,我们可以灵活地管理 MySQL 数据库的用户权限,确保数据的安全性和隐私。

参考链接

  • [MySQL GRANT](
  • [MySQL REVOKE](
  • [MySQL FLUSH](