当我使用 pgAdmin 或 Navicat 登录查看我的远程 PostgreSQL 数据库时,我可以毫无问题地连接,下面列表中的前三个数据库显示正常。但出于某种原因,我无法让最后两个数据库(“template0”和“template1”)与其他数据库一起显示。此外,当我通过 ssh 进入服务器的数据库时,我可以运行“SELECT * FROM a_table_in_template1_database;”它显示了表的所有内容,没有任何问题,所以我知道数据库和其中的表一切正常。如何让“template1”数据库显示在此列表中并正常工作?这是我运行“\list”时 PostgreSQL 终端的输出:
template1=# \list
List of databases
Name | Owner | Encoding | Collation | Ctype | Access privileges
---------------+----------+----------+-----------+-------+-----------------------
mygigline | jball037 | LATIN1 | en_US | en_US |
mygiglinemain | postgres | LATIN1 | en_US | en_US |
postgres | postgres | LATIN1 | en_US | en_US |
template0 | postgres | LATIN1 | en_US | en_US | =c/postgres
template1 | postgres | LATIN1 | en_US | en_US | =CTc/postgres
: postgres=CTc/postgres
(5 rows)
看起来可能是某些具有“访问权限”的东西导致了这种情况。然而,我做了类似“GRANT ALL ON DATABASE template1 TO postgres”的事情,但这似乎没有帮助。
另一条有用的信息:当我使用 Navicat 登录并显示三个数据库时,我可以单击“打开数据库”选项,然后输入“template1”,它将显示在左侧面板上以及其他三个数据库,但我无法单击它或对其执行任何操作。
我只想在 Navicat 或 pgAdmin 中显示我的所有 5 个数据库,并能够访问所有这些数据库:) 非常感谢任何帮助!
最佳答案
这些工具倾向于隐藏 pg_database.datastemplate
为 true
的数据库,因为它们被视为“内部”数据库而不是普通用户数据库。
客户端应用程序可能会提供取消隐藏这些数据库的设置,或者您可以通过名称直接打开它们。
请注意,template0
通常是一个您无法修改的只读数据库,因此在管理 UI 中访问它意义不大。 template1
可以连接和修改,但是当您创建新数据库时,无论您对 template1
做什么都会被复制(没有显式的 TEMPLATE
选项) 所以您通常不想更改它。
我强烈建议您忽略 template0
和 template1
。假装它们不存在。
关于database - 某些 PostgreSQL 数据库无法通过 Navicat 或 pgAdmin 等客户端查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15754010/