一些PostgreSQL数据库通过Navicat或pgAdmin等客户端无法看到

时间:2013-04-02 00:13:52

标签: database postgresql ubuntu pgadmin navicat

当我使用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中并且能够访问所有这些数据库:)任何帮助都将非常感谢!

1 个答案:

答案 0 :(得分:2)

这些工具倾向于隐藏pg_database.datistemplatetrue的数据库,因为它们被视为“内部”数据库而非普通用户数据库。

客户端应用程序可能会提供取消隐藏这些数据库的设置,或者您可以直接通过名称打开它们。

请注意,template0通常是您无法修改的只读数据库,因此在管理UI中访问它是非常简单的。 template1可以连接并修改,但是当您创建新数据库(没有明确的template1选项)时,将复制您对TEMPLATE所做的任何操作,因此您通常不希望改变它。

我强烈建议您忽略template0template1。假装它们不存在。