我有一个在远程机器(Ubuntu 12.04)上运行的 postgresql(9.1.4)服务器,我无法在本地机器上访问它。具体来说,在我的本地机器上,我可以仅使用用户名“postgres”和数据库名称“postgres”访问远程服务器,即使我有其他用户名和数据库。首先是一些背景信息。在远程机器上使用“psql”调用的交互环境中,我创建了另一个名为“mxtxdb”的用户,并为该用户设置了密码。我还创建了一个名为“mxtxdb”的数据库。为了证明它们的存在,我登录到远程机器并运行:
sudo su postgres
Password:
postgres@myhost:~$ psql
psql (9.1.4)
Type "help" for help.
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
mxtxdb | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
mxtxdb | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres+
| | | | | mxtxdb=CTc/postgres
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
此外,当仍在远程机器上时,我可以从“mxtxdb”postgresql 帐户访问数据库:
postgres@myhost:~$ psql -h localhost -U mxtxdb -d mxtxdb
Password for user mxtxdb:
psql (9.1.4)
Type "help" for help.
mxtxdb=>
但是当我尝试在本地机器上做同样的事情时,我得到了这个:
psql -h <server's address> -U postgres -d "postgres" -p 5432
Password for user postgres:
psql (9.1.4)
Type "help" for help.
postgres=#
和
psql -h <server's address> -U "postgres" -d "mxtxdb" -p 5432
Password for user postgres:
psql: FATAL: database "mxtxdb" does not exist
和
psql -h <server's address> -U "mxtxdb" -d "mxtxdb" -p 5432
Password for user mxtxdb:
psql: FATAL: role "mxtxdb" does not exist
我的 pg_hba.conf 文件的最后两行是:
host all mxtxdb 0.0.0.0/0 trust
host all postgres 0.0.0.0/0 trust
并且在 postgresql.conf 文件中将 listen_addresses 设置为“*”(并且未注释)。
知道为什么我不能远程访问其他帐户或数据库,但是当 ssh 进入远程机器时我可以?