我的数据库有问题。我在我的 Ubuntu 服务器上安装了 PostgreSQL 9.5。我更改了postgresql.conf文件以允许将 PostgreSQL 服务器绑定到 localhost。这允许我运行 pgAdmin 并通过转发我运行 PostgreSQL 的端口 5432 连接到我的数据库。
我遇到的问题是我只看到默认表“postgres”,但看不到我新创建的一个“游戏”。postgres=# create database games;
我通过与连接到服务器的 postgres 用户一起运行来创建此表。我知道数据库已创建,因为如果我postgres=# \l+
在连接到服务器时运行,我会得到一个数据库列表,包括我的“游戏”。
第二张图片是 pgAdmin 9.5 应用程序的屏幕截图,其中包含我用来连接服务器的所有属性值。所以我设法连接到服务器,但我无法看到数据库“游戏”。
我还更进一步,通过执行将所有权限授予 postgres 用户postgres=# grant all privileges on database games to postgres;
。您可以在我的第三个屏幕截图中看到访问权限已更改。但是这种变化并没有帮助我解决问题。我仍然无法在 pgAdmin 中看到“游戏”。我看到有人有类似的问题并在服务器上右键单击并单击“新建数据库”。
这似乎创建了一个新数据库,因为从 pgAdmin 中可以看到,应用程序能够找到我在 pgAdmin 中创建的分数表。我认为是这种情况的原因是,因为运行相同的 SQL 连接到服务器 games=# select * from score; 导致错误:关系“分数”不存在第 1 行:从分数中选择 *;。
我出错的任何其他想法。将不胜感激我能得到的任何帮助。
我可以登录到我的数据库。当我运行时psql games postgres
,这将使用 postgres 用户登录我的游戏数据库。这也是我登录并执行 select 语句的方式:
games=# select * from score;
错误:关系“分数”不存在第 1 行:从分数中选择 *;
我更进一步,打印了我们在“游戏”中的表格:
games=# \dt
未找到任何关系。
我设法找到了问题。
一个是我在我的机器上安装了一个我不知道的 PostgreSQL 服务器。看来我是用我的 pgAdmin 安装它的。所以每次我连接到我的服务器时,我都会与我的本地服务器而不是我的远程服务器建立连接。我刚刚卸载了服务器并只安装了 pgAdmin 客户端。
我遇到的第二个问题是
/etc/postgresql/9.5/main/pg_hba.conf
必须更改文件。所以我跑了:并改变了线路
至
一旦改变了,我有两个通过执行重新启动配置:
我还要指出,让 postgres 用户作为 unix 和 DB 用户使用相同的密码是很重要的。我在这里找到了所有这些信息。
您可以使用 psql 登录您的游戏数据库吗?
我可以看到,第一张图片让您连接到 localhost:5432,第二张(psql 连接)您正在连接到 jkalancic@vps73162 - 在似乎是 telnet 会话上 - 你确定你是在同一台机器上查看相同的数据库?
[按照OP的回答]
下一次的提示——你可以从源代码安装,而不是弄乱 /etc/postgresql——除非你这样做,否则你永远不能绝对确定你没有混合客户端、服务器和端口。我一直这样做是为了安装 - 在 Linux 上,我看到你在 Ubuntu 上,所以这应该是小菜一碟。
PostgreSQL 非常适合这种事情。第一次直接工作 - 您可以定制提示以指向您的各种安装 - 如果您想在端口 5432 上放置多个服务器,请确保关闭(在您的启动脚本中)。