【转载】Mysql8授予某个用户某个数据库的权限

发布时间 2023-10-30 21:57:14作者: 夏秋初

参考

  • chatgpt3.5

环境

软件/系统 版本 说明
mysql 8.0.28

正文

要在MySQL中授予某个用户对某个数据库的权限,你可以使用以下SQL语句:

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

下面是这个语句的各个部分的解释:

  • 权限列表:这是你要授予用户的权限列表,可以包括SELECT、INSERT、UPDATE、DELETE等权限,也可以使用通配符ALL PRIVILEGES来授予用户所有权限。例如,如果你想授予用户所有权限,可以使用ALL PRIVILEGES。
  • 数据库名:这是你要授予权限的数据库的名称。如果你想授予用户对所有数据库的权限,可以使用通配符*。
  • 表名:这是你要授予权限的特定表的名称。如果你想授予用户对数据库中所有表的权限,可以使用通配符*。
  • 用户名:这是你要授予权限的用户的用户名。
  • 主机名:这是用户的主机名,它指定了用户可以从哪个主机连接到数据库服务器。通常,你可以使用通配符%来允许用户从任何主机连接,或者使用localhost来只允许本地连接。

以下是一些示例:

  • 授予用户"myuser"对数据库"mydb"的所有权限,并允许他们从任何主机连接:
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%';
  • 授予用户"myuser"对数据库"mydb"的SELECT和INSERT权限,并允许他们从本地连接:
GRANT SELECT, INSERT ON mydb.* TO 'myuser'@'localhost';
  • 授予用户"myuser"对所有数据库的DELETE权限,并允许他们从特定主机(例如,192.168.1.100)连接:
GRANT DELETE ON *.* TO 'myuser'@'192.168.1.100';

一旦你执行了GRANT语句,用户将被授予相应的权限。请注意,为了使更改生效,你可能需要执行以下语句:

FLUSH PRIVILEGES;

这将重新加载权限表,以便新的权限设置生效。