在 MySQL 中,GRANT 语句用于授予用户对数据库对象的访问权限。下面是一些基本的 GRANT 语句的使用示例。

基本语法
GRANT privileges ON db_name.tbl_name TO 'username'@'hostname' [IDENTIFIED BY 'password'];
  • 1.

这里的 privileges 可以是一个或多个权限(用逗号分隔),db_name.tbl_name 指定要授予权限的数据库表,username 是被授权的用户名,hostname 是该用户登录的主机名,password 是可选的,用于设置新密码。

示例 1: 授予所有权限给一个用户

假设你想要授予用户 john 对整个数据库的所有权限:

GRANT ALL PRIVILEGES ON mydatabase.* TO 'john'@'localhost' IDENTIFIED BY 'secure_password';
  • 1.
示例 2: 授予特定表的读写权限

如果你想让用户 jane 能够读取和更新 orders 表的数据:

GRANT SELECT, INSERT, UPDATE ON mydatabase.orders TO 'jane'@'localhost' IDENTIFIED BY 'secure_password';
  • 1.
示例 3: 授予全局权限

如果你想让用户 admin 成为数据库管理员,即具有所有全局权限:

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'secure_password';
  • 1.
示例 4: 授予对所有表的读权限

如果你想让用户 reader 能够读取 mydatabase 中的所有表:

GRANT SELECT ON mydatabase.* TO 'reader'@'localhost' IDENTIFIED BY 'secure_password';
  • 1.
示例 5: 允许用户创建新用户

如果你想让用户 manager 能够创建新的用户账户:

GRANT CREATE USER ON *.* TO 'manager'@'localhost' IDENTIFIED BY 'secure_password';
  • 1.
示例 6: 允许用户复制权限给其他用户

如果你想让用户 teacher 能够将他的权限复制给其他用户:

GRANT GRANT OPTION ON mydatabase.* TO 'teacher'@'localhost' IDENTIFIED BY 'secure_password';
  • 1.
示例 7: 允许用户远程登录

如果你想让用户 remote_user 从任何主机登录:

GRANT ALL PRIVILEGES ON mydatabase.* TO 'remote_user'@'%' IDENTIFIED BY 'secure_password';
  • 1.
示例 8: 撤销权限

如果你想撤销之前授予的权限,可以使用 REVOKE 语句。例如,撤销用户 janeorders 表的所有权限:

REVOKE ALL PRIVILEGES ON mydatabase.orders FROM 'jane'@'localhost';
  • 1.

请确保在使用 GRANTREVOKE 语句时,你有足够的权限来执行这些操作。如果你没有足够的权限,你需要联系数据库管理员来获取帮助。