GRANT 本页面介绍了云数据库ClickHouse的授权操作。 GRANT操作: 给云数据库ClickHouse的用户或角色赋予 权限 将角色分配给用户或其他角色 取消权限,使用 REVOKE语句。查看已授权的权限请使用 SHOW GRANTS。 授权操作语法 sql GRANT [ON CLUSTER clustername] privilege [(columnname [,...])] [,...] ON {db.tabledb..table} TO {user role CURRENTUSER} [,...] [WITH GRANT OPTION] [WITH REPLACE OPTION] privilege — 权限类型 role — 用户角色 user — 用户账号 WITH GRANT OPTION 授予 user 或 role执行 GRANT 操作的权限。用户可将在自身权限范围内的权限进行授权 WITH REPLACE OPTION 以当前sql里的新权限替代掉 user 或 role的旧权限,如果没有该选项则是追加授权。 角色分配的语法 sql GRANT [ON CLUSTER clustername] role [,...] TO {user anotherrole CURRENTUSER} [,...] [WITH ADMIN OPTION] [WITH REPLACE OPTION] role — 角色 user — 用户 WITH ADMIN OPTION 授予 user 或 role 执行ADMIN OPTION 的权限 WITH REPLACE OPTION 以当前sql里的新role替代掉 user 或 role的旧role,如果没有该选项则是追加roles。 用法 使用 GRANT,你的账号必须有 GRANT OPTION的权限。用户只能将在自身权限范围内的权限进行授权。 例如,管理员有权通过下面的语句给 john账号添加授权: sql GRANT SELECT (x,y) ON db.table TO john WITH GRANT OPTION 这意味着 john 有权限执行以下操作: SELECT x,y FROM db.table SELECT x FROM db.table SELECT y FROM db.table john 不能执行 SELECT z FROM db.table。同样的 SELECT FROM db.table 也是不允许的。执行这个查询时,CH不会返回任何数据,甚至 x 和 y列。唯一的例外是,当表仅包含 x和 y列时。这种情况下,CH返回所有数据。 同样 john 有权执行 GRANT OPTION,因此他能给其它账号进行和自己账号权限范围相同的授权。 可以使用 号代替表或库名进行授权操作。例如, GRANT SELECT ON db. TO john 操作运行 john对 db库的所有表执行 SELECT查询。同样,你可以忽略库名。在这种情形下,权限将指向当前的数据库。例如, GRANT SELECT ON to john 对当前数据库的所有表指定授权, GRANT SELECT ON mytable to john对当前数据库的 mytable表进行授权。 访问 systen数据库总是被允许的(因为这个数据库用来处理sql操作) 可以一次给多个账号进行多种授权操作。 GRANT SELECT,INSERT ON . TO john,robin 允许 john和 robin 账号对任意数据库的任意表执行 INSERT和 SELECT操作。