Postgres列出数据库权限

时间:2016-09-18 16:38:45

标签: postgresql

我正在尝试使用角色创建一个数据库,该数据库只能连接到查看该数据库。

我是怎么做到的:

_, err = db.Exec("CREATE DATABASE " + database.Name + " ENCODING 'utf8' LC_COLLATE 'en_US.UTF-8'")
_, err = db.Exec("CREATE ROLE " + database.User + " WITH LOGIN PASSWORD '" + database.Password + "'")
_, err = db.Exec("REVOKE ALL PRIVILEGES ON DATABASE " + database.Name + " FROM PUBLIC")
_, err = db.Exec("GRANT ALL PRIVILEGES ON DATABASE " + database.Name + " TO " + database.User)

问题是我的角色可以通过以下方式连接到postgres:

psql -U haruki -W -h localhost

哪个没关系,但它可以列出所有具有相应权限的数据库,即使它无法连接到它们。

有什么方法可以阻止用户列出所有数据库?或者也许只允许使用-d标志登录?

1 个答案:

答案 0 :(得分:0)

在pgsql中没有办法限制它。 pg_catalog包含数据库的名称。

您必须使用您使用的任何语言添加自定义图层以执行此操作,或者您可以通过编辑postgresql配置并使用DDL语句来关注this

相关问题