我想在 Compute Engine 上设置 PostgreSQL,但当尝试更改配置文件
通过sudo nano ../../etc/postgresql/9.3/main/pg_hba.conf
我粘贴# IPv4 remote connections for the tutorial: host all all [YOUR_IPV4_ADDRESS]/32 md5
我的本地计算机 IP 地址并按下Control+x
然后数据未保存
答案1
我尝试按照社区教程中提供的步骤进行操作如何在 Compute Engine 上设置 PostgreSQL未发现任何问题。请记住本教程中提到的一些软件版本已过时,应替换为受支持的版本因此,文件路径应该更新也一样。
请查看以下步骤:
创建 VM 实例(因为教程中的 Ubuntu 14.04 已经过时,所以我用 Ubuntu 18.04 LTS 将其替换)。
$ gcloud compute instances create instance-1 --zone=europe-west3-a --machine-type=e2-medium --image=ubuntu-1804-bionic-v20200701 --image-project=ubuntu-os-cloud Created [https://www.googleapis.com/compute/v1/projects/test-prj/zones/europe-west3-a/instances/instance-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS instance-1 europe-west3-a e2-medium 10.156.15.192 35.246.XXX.YYY RUNNING
安装 PostgreSQL 并使用 PSQL 完成设置:
$ sudo apt update $ sudo apt upgrade $ sudo apt install postgresql postgresql-client postgresql-contrib $ sudo -u postgres psql postgres psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1)) Type "help" for help. postgres=# \password postgres Enter new password: Enter it again: postgres=# CREATE EXTENSION adminpack; CREATE EXTENSION postgres=# \q $
PostgreSQL 9.3 已被 10.12 取代。
配置PostgreSQL远程访问:
3.1. 编辑
pg_hba.conf
:- 导航ip4.me获取本地计算机(外部)的 IPv4 地址;
- 打开文件
/etc/postgresql/10/main/pg_hba.conf
(由于版本较新,文件路径已更改):$ sudo nano /etc/postgresql/10/main/pg_hba.conf
- 向下滚动到文件底部并添加以下行:
# IPv4 remote connections for the tutorial: host all all [YOUR_IPV4_ADDRESS]/32 md5
- 将 [YOUR_IPV4_ADDRESS] 替换为本地计算机的地址:
# IPv4 remote connections for the tutorial: host all all 89.64.XXX.YYY/32 md5
- 保存文件并退出编辑器;
- 检查更改:
$ sudo cat /etc/postgresql/10/main/pg_hba.conf ... # Database administrative login by Unix domain socket local all postgres peer # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # 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. local replication all peer host replication all 127.0.0.1/32 md5 host replication all ::1/128 md5 # IPv4 remote connections for the tutorial: host all all 89.64.XXX.YYY/32 md5
3.2. 编辑
postgresql.conf
- 打开文件
/etc/postgresql/10/main/postgresql.conf
(由于版本较新,文件路径已更改):$ sudo nano /etc/postgresql/10/main/postgresql.conf
- 向下滚动到以 开头的行
#listen_addresses = 'localhost'
; - 删除
#
字符以取消注释该行; - 替换
localhost
为*
('*' 设置使 Postgres 能够监听所有 IP 地址); - 保存文件并退出编辑器;
- 重新启动数据库服务:
$ sudo service postgresql restart $ sudo service postgresql status ● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Tue 2020-07-14 09:57:07 UTC; 6s ago Process: 7452 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 7452 (code=exited, status=0/SUCCESS) Jul 14 09:57:07 instance-1 systemd[1]: Starting PostgreSQL RDBMS... Jul 14 09:57:07 instance-1 systemd[1]: Started PostgreSQL RDBMS.