我正在尝试设置一个远程访问的Postgres数据库。我想把这个数据库放在Linux上基于Linux的设备(HOST),并在另一个基于Linux的设备(CLIENT)上访问它。
在我的特殊情况下,HOST是一个运行Ubuntu的桌面设备。CLIENT是安装了Linux虚拟系统的Chromebook。(我知道。但这是我手头上最接近Linux的设备了。
设置数据库的步骤
- 使用APT在HOST上安装所需软件
PGP_KEY_URL="https://www.postgresql.org/media/keys/ACCC4CF8.asc"
POSTGRES_URL_STEM="http://apt.postgresql.org/pub/repos/apt/"
POSTGRES_URL="$POSTGRES_URL_STEM `lsb_release -cs`-pgdg main"
POSTGRES_VERSION="12"
PGADMIN_URL_SHORT="https://www.pgadmin.org/static/packages_pgadmin_org.pub"
PGADMIN_URL_STEM="https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt"
PGADMIN_TO_ECHO="deb $PGADMIN_URL_STEM/`lsb_release -cs` pgadmin4 main"
PGADMIN_PATH="/etc/apt/sources.list.d/pgadmin4.list"
sudo apt install curl --yes
sudo apt install gnupg2 --yes
wget --quiet -O - $PGP_KEY_URL | sudo apt-key add -
echo "deb $POSTGRES_URL" | sudo tee /etc/apt/sources.list.d/pgdg.list
sudo apt install postgresql-$POSTGRES_VERSION --yes
sudo apt install postgresql-client-$POSTGRES_VERSION --yes
sudo curl $PGADMIN_URL_SHORT | sudo apt-key add
sudo sh -c "echo "$PGADMIN_TO_ECHO" > $PGADMIN_PATH && apt update"
sudo apt update
sudo apt install pgadmin4 --yes
- 创建一个新的Postgres用户
NU_USERNAME="my_user"
NU_PASSWORD="guest"
NU_QUERY="CREATE USER $NU_USERNAME WITH superuser password '$NU_PASSWORD';"
sudo -u postgres psql -c "$NU_QUERY"
- 创建新的服务器和数据库。我使用PGAdmin GUI手动完成了此操作。
- 添加测试数据,一个包含一对记录的表。我是用一个脚本完成的。
- 按照这个答案中给出的步骤使数据库可以远程访问。
远程连接数据库已经采取的步骤
- 在CLIENT上安装PGAdmin .
- 试图使用PGAdmin连接。我使用了"新服务器"。向导,并输入:
主机IP地址:192.168.1.255
端口:5432(与我在Host上设置数据库时相同)
用户:my_user
密码:guest
然而,当我尝试保存连接时,PGAdmin在几秒钟后响应说连接已超时.
您必须像这样在/var/lib/pgsql/data/postgresql.conf
中配置listen_addresses
:
listen_addresses = '*'
下一步,通过检查telnet是否可以连接到您的服务器,确保您的防火墙没有阻止连接:
$ telnet 192.168.1.255 5432
Connected to 192.168.1.255.
Escape character is '^]'.
如果您看到Connected
网络连接是ok的。接下来,您必须为远程主机配置访问权限。