如何在PostgreSQL中为基于Web的应用程序设置用户帐户

如何在PostgreSQL中为基于Web的应用程序设置用户帐户,postgresql,Postgresql,我正在开发一个基于web的应用程序,使用PostgreSQL作为后端数据库&perl处理脚本 我将登录信息保存在一个单独的文件中,类似于此处的建议,因此根据脚本需要实现的内容,它可以指向不同的登录凭据。目前,这是默认的PostgreSQL帐户,显然需要更改 我需要弄清楚如何在PostgreSQL中设置用户帐户 我想我需要两个,一个允许用户查询数据库,例如web用户,另一个需要提交更改,例如web管理员 web_管理员帐户需要登录到该网页 在pgAdmin中或在命令行上,我如何创建登录卷并提供所需

我正在开发一个基于web的应用程序,使用PostgreSQL作为后端数据库&perl处理脚本

我将登录信息保存在一个单独的文件中,类似于此处的建议,因此根据脚本需要实现的内容,它可以指向不同的登录凭据。目前,这是默认的PostgreSQL帐户,显然需要更改

我需要弄清楚如何在PostgreSQL中设置用户帐户

我想我需要两个,一个允许用户查询数据库,例如web用户,另一个需要提交更改,例如web管理员

web_管理员帐户需要登录到该网页

在pgAdmin中或在命令行上,我如何创建登录卷并提供所需的权限

编辑请澄清

我曾尝试创建两个帐户,但不清楚这是否是正确的方法

CREATE USER web_user PASSWORD 'password1';
GRANT SELECT to web_user on Table1;   // Read Only
CREATE USER web_admin PASSWORD 'password2';
GRANT SELECT,INSERT,UPDATE,DELETE to web_admin on Table1;        // Read Insert and update / delete rows within a existing table but not able to create, alter or delete a Table  or column
编辑2个OOP

所以我在pgAdmin窗口中执行了以下操作

 CREATE USER web_user PASSWORD 'password1';
 GRANT SELECT to web_user in schema PUBLIC;   // Read Only

 CREATE USER web_admin PASSWORD 'password2';
 GRANT SELECT,INSERT,UPDATE,DELETE to web_admin in schema PUBLIC
web_用户帐户只允许对数据库进行读取访问问题web_管理员帐户具有相同的读取访问权限

我已尝试删除web_用户并通过撤销

revoke all privileges on database mydb from web_admin;
但是它失败了,因为在mydb中列出了所有表的依赖项

我试图查看web_admin实际拥有的权限,但无法查看

我该如何注销这个帐户


grant web_用户的语法有什么问题

要创建用户,可以使用SQL中的命令。(这与登录时创建角色相同)之后,您可以使用来授予权限

我不知道你所说的“默认PostgreSQL帐户”是什么意思。如果你说的是“postgres”账户,它是超级用户,拥有一切权利

特权和安全的主题相当复杂,我至少写过几次:


  • 这里有很多关于如何做到这一点的信息。您是否考虑过在您的开发中使用类似的框架?我不能保证这个特定的框架,因为我只使用python和django,但是一般来说使用一个框架可以消除这种事情带来的许多痛苦,并降低代码不安全的可能性。这已经打开了一个全新的痛苦世界!你能看看我的编辑并告诉我我的理解是否正确吗?谢谢我读了你的帖子,但在我的情况下,作为超级用户执行远程登录不太可能。我使用pgAdmin访问数据库服务器,直接访问psql。他们需要远程访问服务器,但只有sys admin具有访问权限。我正在努力解决这个问题&怀疑我把它弄得一团糟。请参阅第二次编辑。