【发布时间】:2013-02-06 17:14:36
【问题描述】:
我正在开发一个基于 Web 的应用程序,使用 PostgreSQL 作为后端数据库和 perl 处理脚本
我将登录信息保存在一个单独的文件中,类似于此处的建议 where to store global database connection parameters,因此根据脚本需要实现的内容,它可能指向不同的登录凭据目前它是默认的 PostgreSQL 帐户,这显然需要更改。
我需要弄清楚如何在 PostgreSQL 中设置用户帐户
我想我需要两个允许用户查询数据库,例如 web_user,另一个需要提交更改,例如 web_admin。
web_admin 账户需要登录网页
在 pgAdmin 或命令行中,我如何创建登录 Rolls 并提供所需的权限?
编辑请澄清
我曾尝试创建两个帐户,但不清楚这是否是正确的方法
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 个 oops
所以我在 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 的语法有什么问题?
【问题讨论】:
-
postgresql.org/docs/9.1/static/sql-createrole.html 这里有很多关于如何做到这一点的信息。
-
您是否考虑过使用Dancer 之类的框架进行开发?由于我只使用 python 和 django,因此我无法保证该特定框架,但通常使用框架可以消除这类事情的很多痛苦,并降低代码不安全的可能性。
标签: postgresql