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

时间:2013-02-06 17:14:36

标签: postgresql

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

我将登录信息保存在一个单独的文件中,类似于这里的建议where to store global database connection parameters所以根据脚本需要实现的目的,它可以指向不同的登录凭据目前它是默认的PostgreSQL帐户,这显然需要更改。

我需要了解如何在PostgreSQL中设置用户帐户

我认为我需要两个允许用户查询数据库的文件,例如web_user,另一个需要提交更改,例如web_admin。

web_admin帐户需要登录网页

在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条ooops

所以我在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_user帐户只允许对数据库进行读访问,web_admin帐户具有相同的读访问权

我试过放弃web_user&撤消

revoke all privileges on database mydb from web_admin;

但它失败了,列出了mydb

中所有表的依赖项错误

我试图了解web_admin实际拥有哪些权限但却无法实现。

如何删除此帐户

grant web_user的语法有什么问题?

1 个答案:

答案 0 :(得分:3)

要创建用户,可以在SQL中使用CREATE USER命令。 (它与CREATE ROLE ... WITH LOGIN相同)之后您使用GRANT授予权限。

我不确定“默认的PostgreSQL帐户”是什么意思。如果您正在谈论“postgres”帐户,它是超级用户,并拥有一切权利。

特权和保护的主题非常复杂,我至少写了几次:

  1. How to grant privileges on all tables in PostgreSQL < 9.0
  2. How to grant privileges on all tables in PostgreSQL > 9.0
  3. How to secure your database