如何为PostgreSQL中的用户帐户提供创建和删除数据库的功能?有办法用GRANT吗?

#1 楼

这是通过ALTER USER username CREATEDB;完成的。

请参见文档中的ALTER USER。

要删除数据库,您可以是超级用户(也可以通过ALTER USER授予该用户)或必须拥有数据库。

#2 楼

首先,您必须以postgres用户身份登录:

$ sudo -u postgres psql postgres

# \password postgres

Enter new password:


输入postgres用户(PostgreSQL上的特殊用户)的新密码后,您现在已以postgres登录您可以将权限授予其他用户。假设您有一个名为user1的用户。要授予他创建和删除数据库的能力,您必须写(以postgres用户身份):

ALTER USER user1 CREATEDB;


希望有帮助...

#3 楼

从头开始创建具有CREATEROLE和CREATEDB权限的用户。

使用命令行客户端登录到PG服务器后,具有适当权限的用户可以创建用户(例如postgres用户) ,默认情况下,在UNIXes上,系统超级用户可以使用$ sudo -u postgres psql postgres来轻松模拟它):

CREATE ROLE user_name PASSWORD 'tYPe_YoUr_PaSSwOrD' NOSUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;



NOSUPERUSER-创建的用户没有超级用户权限(建议使用postgres用户)。
CREATEDB-创建的用户可以创建将拥有的数据库。
CREATEROLE-创建的用户可以为其拥有或拥有的对象创建角色(登录)
INHERIT-创建的用户继承一些默认选项(可选)。
LOGIN-创建的用户有权登录。

也可以使用PG二进制文件(应用程序)。例如,上述SQL等效于运行:

 sudo -u postgres createuser --createdb --createrole --pwprompt user_name
 


授予现有用户权限创建数据库

使用命令行客户端登录到PG服务器后,该用户具有更改用户的适当权限(例如postgres用户,在UNIX上默认为系统超级用户可以使用$ sudo -u postgres psql postgres轻松地模拟它):

ALTER USER user_name CREATEDB;


,或赋予与上面的示例相同的权限: br />