更新时间:2022-08-16 GMT+08:00
如何REVOKE某用户的connect on database权限?
GaussDB(DWS)提供了一个隐式定义的拥有所有角色的组PUBLIC,所有创建的用户和角色默认拥有PUBLIC所拥有的权限。要撤销或重新授予用户和角色对PUBLIC的权限, 可通过在GRANT和REVOKE指定关键字PUBLIC实现。
GaussDB(DWS)会将某些类型的对象上的权限授予PUBLIC。默认情况下,对表、表字段、序列、外部数据源、外部服务器、模式或表空间对象的权限不会授予PUBLIC,而以下这些对象的权限会授予PUBLIC:数据库的CONNECT权限和CREATE TEMP TABLE权限、函数的EXECUTE特权、语言和数据类型(包括域)的USAGE特权。当然,对象拥有者可以撤销默认授予PUBLIC的权限并专门授予权限给其他用户。为了更安全,建议在同一个事务中创建对象并设置权限,这样其他用户就没有时间窗口使用该对象。另外,这些初始的默认权限可以使用ALTER DEFAULT PRIVILEGES命令修改。
可参考以下示例,REVOKE某用户的connect on database权限:
- 执行以下命令连接GaussDB(DWS) 集群的默认数据库gaussdb:
gsql -d gaussdb -h 192.168.0.89 -U dbadmin -p 8000 -r
根据界面提示输入密码后,显示如下信息表示gsql工具已经连接成功:
1
gaussdb=>
- 创建用户u1。
CREATE USER u1 IDENTIFIED BY 'password'; CREATE USER
- 确认u1正常访问。
gsql -d gaussdb -h 192.168.0.89 -U u1 -p 8000 -W password -r gsql ((GaussDB 8.1.0 build be03b9a0) compiled at 2021-03-12 14:18:02 commit 1237 last mr 2001 release) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_128_GCM_SHA256, bits: 128) Type "help" for help.
- 撤销public的connect on database权限。
gsql -d gaussdb -h 192.168.0.89 -U dbadmin -p 8000 -r gaussdb=> REVOKE CONNECT ON database gaussdb FROM public; REVOKE
若直接使用revoke connect on database postgres from u1命令撤销u1用户的权限不会生效,因为数据库的CONNECT权限授予了PUBLIC,需指定关键字PUBLIC实现。
- 验证结果,显示如下内容表示用户u1的connect on database权限已成功撤销。
gsql -d gaussdb -h 192.168.0.89 -U u1 -p 8000 gsql: FATAL: permission denied for database "gaussdb" DETAIL: User does not have CONNECT privilege.
父主题: 帐户、密码、权限