我如何在Azure PostgreSQL中创build一个只读用户?
在我的本地postgres安装,我可以运行这些命令来创build一个只读的用户:
CREATE USER spqr1 WITH ENCRYPTED PASSWORD 'password'; REVOKE CONNECT ON DATABASE postgres FROM PUBLIC; CREATE DATABASE mydb; REVOKE CONNECT ON DATABASE mydb FROM PUBLIC; GRANT CONNECT ON DATABASE mydb TO spqr1; \connect mydb REVOKE ALL PRIVILEGES ON SCHEMA public FROM PUBLIC; GRANT USAGE ON SCHEMA public TO spqr1;
当我在Azure PostgreSQL数据库上运行这些命令时,新用户spqr1拥有我不想要的权限:他们可以连接到postgres数据库,并在mydb创build表。 在我的本地机器上,新用户没有这些权限。
在我看来,有一个默认用户azure_superadmin已经授予PUBLIC连接到postgres数据库的权限,以及在任何公共模式中创build表的权限。 我的pipe理员帐户( meadmin )没有授予这些权限,也无法删除它们。 这是怎么回事,如果是这样,那么我应该如何创build一个只读帐户?
这是来自\l的修剪输出:
Name | Owner | Access privileges -----------+-----------------+------------------------------------- mydb | meadmin | =T/meadmin + | | meadmin=CTc/meadmin + | | spqr1=c/meadmin postgres | azure_superuser | =Tc/azure_superuser + | | azure_superuser=CTc/azure_superuser template0 | azure_superuser | =c/azure_superuser + | | azure_superuser=CTc/azure_superuser template1 | azure_superuser | =c/azure_superuser + | | azure_superuser=CTc/azure_superuser
这里是\dn+的修剪输出,在连接到mydb :
Name | Owner | Access privileges --------+-----------------+------------------------------------ public | azure_superuser | azure_superuser=UC/azure_superuser+ | | =UC/azure_superuser