MySQL 赋权 flush privileges
1. 背景介绍
在 MySQL 数据库中,为了保证数据的安全性和隐私,通常会对用户进行权限控制。MySQL 提供了 GRANT
和 REVOKE
两个命令,用于分配和撤销用户的权限。
当我们修改了用户权限或者创建了新的用户时,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 的作用
当我们通过 GRANT
或 REVOKE
命令修改了用户权限时,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';
接下来,我们赋予用户 readonly
对 employees
数据库的 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](