当我使用pgAdmin或Navicat登录查看我的远程PostgreSQL数据库时,我可以毫无问题地连接,并且下面列表中的前三个数据库显示正常。但由于某种原因,我无法获得最后两个数据库(“template0”和“template1”)以显示其他数据库。此外,当我进入服务器的数据库时,我可以运行“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”,它将显示在左侧面板上以及其他三个数据库,但我无法点击它或对它做任何事情。
我只是希望能够显示我的所有5个数据库都显示在Navicat或pgAdmin中并且能够访问所有这些数据库:)任何帮助都将非常感谢!
答案 0 :(得分:2)
这些工具倾向于隐藏pg_database.datistemplate
为true
的数据库,因为它们被视为“内部”数据库而非普通用户数据库。
客户端应用程序可能会提供取消隐藏这些数据库的设置,或者您可以直接通过名称打开它们。
请注意,template0
通常是您无法修改的只读数据库,因此在管理UI中访问它是非常简单的。 template1
可以连接并修改,但是当您创建新数据库(没有明确的template1
选项)时,将复制您对TEMPLATE
所做的任何操作,因此您通常不希望改变它。
我强烈建议您忽略template0
和template1
。假装它们不存在。