我自己主要是 PostgreSQL 的命令行用户,但最近我有理由为其他人设置一个 PHPPGAdmin 前端。
然而,我遇到了一个问题——虽然在命令行上用户可以毫无问题地登录并连接到他们应该有权访问的数据库,但在 PHPPGAdmin 前端他们无法看到他们不拥有的数据库(但有读取权限)。
我尝试了以下方法:
GRANT CONNECT ON DATABASE example TO otheruser;
GRANT USAGE ON SCHEMA public TO otheruser;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO otheruser;
如前所述,当使用软件或直接命令行连接时,这足以让它们连接并从数据库中选择;问题似乎出在 PHPPGAdmin 上。
欢迎对我可能忽略的内容提出任何建议。
答案1
好的,对源代码进行了一些挖掘,我忽略了以下几点config.inc.php
:
// Only show owned databases?
// Note: This will simply hide other databases in the list - this does
// not in any way prevent your users from seeing other database by
// other means. (e.g. Run 'SELECT * FROM pg_database' in the SQL area.)
$conf['owned_only'] = true;
将其从 更改为true
即可false
解决问题。