1

我的数据库有问题。我在我的 Ubuntu 服务器上安装了 postgreSQL 9.5。我更改了 postgresql.conf 文件以允许将 postgreSQL 服务器绑定到 localhost。这允许我运行 pgAdmin 并通过转发我运行 postgreSQL 的端口 5432 来连接到我的数据库。

我遇到的问题是我只看到默认表“postgres”,但看不到我新创建的一个“游戏”(我通过运行create database games连接到服务器的 postgres 用户创建了这个表)。

在此处输入图像描述

这是我用来连接服务器的所有属性值的 pgAdmin 应用程序的屏幕截图。

在此处输入图像描述

正如您从第一张图片中看到的那样,我使用与 postgres 数据库相同的权限 - 它是空白的,应该授予所有人访问权限。我知道我必须稍后更改它并将其限制为我拥有的 postgres 用户,但现在我会这样。一旦我设法看到我的“游戏”数据库,我就会开始加强安全性。

更新我授予对数据库“游戏”的所有访问权限,该数据库在第三个屏幕截图上可见。访问权限不同。这对我没有帮助,当使用 pgAdmin 连接到服务器时,我仍然看不到数据库。看到有人遇到类似的问题,在服务器上运行右键,点击“新建数据库”。这似乎创建了一个新数据库,因为从 pgAdmin 中可以看到,应用程序设法找到我在 pgAdmin 中创建的分数表。我认为是这种情况的原因是,因为运行连接到服务器的相同 SQL 会postgres=# select * from score;导致ERROR: relation "score" does not exist LINE 1: select * from score;.

在此处输入图像描述

4

2 回答 2

2

我设法找到了问题。我的一个问题是我(不知道)在我的机器上安装了一个 postgreSQL 服务器。似乎我在安装时安装了它pgAdmin。所以每次我连接到我的服务器时,我都会建立到我的本地服务器而不是我的远程服务器的连接。所以我只是卸载了服务器,只安装了 pgAdmin 客户端。

我遇到的第二个问题是/etc/postgresql/9.5/main/pg_hba.conf必须更改文件。所以我跑:

sudo vi /etc/postgresql/9.5/main/pg_hba.conf

并改变了线路

# Database administrative login by Unix domain socket local all postgres peer

# Database administrative login by Unix domain socket local all postgres md5

更改后,我必须通过执行以下命令重新启动配置:

sudo /etc/init.d/postgresql reload

我还要指出,让 postgres 用户作为具有相同密码的 unix 和 DB 用户非常重要。我在这里找到了所有这些信息。

于 2016-03-23T00:46:49.920 回答
0

尝试为您的新表显式授予访问权限。

我相信空白的访问权限列意味着该表具有默认访问权限。默认值可以是对表、列、模式和表空间没有公共访问权限。欲了解更多信息:http ://www.postgresql.org/docs/9.4/static/sql-grant.html

于 2016-03-21T22:56:27.993 回答