【发布时间】:2019-01-29 15:26:17
【问题描述】:
我需要与同一办公室(在同一网络中)的同事共享我 PC 中 PostgreSQL 的数据库。我做了一些研究,但我仍然对此有一些疑问。
我自己的一点背景:我已经独立使用PostgreSQL有一段时间了,并且已经创建了一堆有用的数据库,现在需要与其他人分享。所以我对PostgreSQL的用法和语法很熟悉,但是对于它的数据库管理,我还是比较新的……我的PostgreSQL版本是10.6,我在Windows上工作。
在我最初的研究中,我发现this post 对我的问题很有帮助,但我需要对此进行更多说明。上述帖子的答案提到:
显然,用户需要访问数据库:
GRANT CONNECT ON DATABASE my_db TO my_user;以及(至少)架构上的 USAGE 权限:
GRANT USAGE ON SCHEMA public TO my_user;
那么第一个问题出现了:我应该在哪里运行这些代码? 假设我在 pgAdmin 和我想共享的数据库中,我应该打开一个查询工具并在那里运行语法吗?
其次,用户名(如上面代码中使用的my_user)和我们自己的超级用户名是一样的吗?即如果我的超级用户名只是postgres(我相信这是安装过程中的默认设置),如果有人想授予我访问他的数据库的权限,他只需使用postgres 代替my_user?
最后,如果我办公室外有用户,那么如何授予远程访问权限?
另外,我在这里添加了我的 pg_hba_conf:
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
【问题讨论】:
-
在本地网络上,用户可以在 postgres url 中指定您的 ip。办公室外的人可以在访问之前连接到办公室 vpn 并进入同一网络。对于 postgres 网址,请参阅此处:stackoverflow.com/questions/3582552/postgresql-connection-url
-
感谢您的及时回复。所以我应该在我的代码示例中使用 ip 作为“my_user”?而我postgres url部分中的ip,是指我在Pgadmin中时url会话中的ip地址(如127.0.0.1:50787/browser)?
-
不,127.0.0.1 是您的环回地址。为了让其他人访问您的数据库,他们需要使用您的 IPv4。
-
感谢您的解释,现在更有意义了。那么他们应该如何使用我的 IPv4 呢?通过我上面写的示例代码?即 GRANT CONNECT ON DATABASE my_db TO my_user;
-
数据库、用户和密码都是 postgres url 的一部分。因此,当用户连接时,该用户用户将直接访问数据库并运行查询。您需要创建一个有权访问该数据库的用户并首先共享详细信息,然后用户才能连接。不客气!!!
标签: postgresql database-permissions