1. 安装 PostgreSQL 12
-
添加 PostgreSQL 存储库:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
-
导入存储库的签名密钥:
wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
-
更新包列表:
sudo apt update
-
安装 PostgreSQL 12:
sudo apt install postgresql-12
2. 配置数据目录到指定的数据盘
假设你要将数据目录移动到 /mnt/data/postgresql/12/main
,请按照以下步骤操作:
-
停止 PostgreSQL 服务:
sudo systemctl stop postgresql
-
创建新的数据目录:
sudo mkdir -p /mnt/data/postgresql/12/main sudo chown -R postgres:postgres /mnt/data/postgresql sudo chmod 700 /mnt/data/postgresql/12/main
-
初始化新的数据目录:
sudo -u postgres /usr/lib/postgresql/12/bin/initdb -D /mnt/data/postgresql/12/main
-
修改 PostgreSQL 配置文件以使用新的数据目录:
编辑 PostgreSQL 配置文件/etc/postgresql/12/main/postgresql.conf
,找到data_directory
选项并修改为新的数据目录路径:sudo nano /etc/postgresql/12/main/postgresql.conf
将
data_directory
修改为:data_directory = '/mnt/data/postgresql/12/main'
-
更新 PostgreSQL 环境配置文件:
编辑 PostgreSQL 环境配置文件/etc/postgresql/12/main/environment
,添加或修改PGDATA
变量:sudo nano /etc/postgresql/12/main/environment
添加或修改为:
PGDATA = '/mnt/data/postgresql/12/main'
-
重新加载 systemd 配置:
sudo systemctl daemon-reload
-
启动 PostgreSQL 服务:
sudo systemctl start postgresql
-
验证 PostgreSQL 是否使用新的数据目录:
连接到 PostgreSQL 并检查数据目录:sudo -u postgres psql -c "SHOW data_directory;"
如果显示的新数据目录路径为 /mnt/data/postgresql/12/main
,则说明配置成功。
要允许所有 IP 地址访问 PostgreSQL 服务器,你可以在 pg_hba.conf
文件中添加一行配置,使用 0.0.0.0/0
来表示所有 IPv4 地址,或者使用 ::/0
来表示所有 IPv6 地址。
修改 pg_hba.conf
文件
-
编辑
pg_hba.conf
文件:sudo nano /etc/postgresql/12/main/pg_hba.conf
-
添加以下行:
允许所有 IPv4 地址访问:
host all all 0.0.0.0/0 md5
如果你还需要允许所有 IPv6 地址访问,可以添加:
host all all ::/0 md5
-
保存并关闭文件:
在
nano
中,按Ctrl+O
保存文件,然后按Ctrl+X
退出编辑器。
修改 postgresql.conf
文件
确保 PostgreSQL 配置文件 postgresql.conf
中的 listen_addresses
设置为 '*'
,以监听所有 IP 地址。
-
编辑
postgresql.conf
文件:sudo nano /etc/postgresql/12/main/postgresql.conf
-
找到
listen_addresses
配置项并修改:listen_addresses = '*'
-
保存并关闭文件:
在
nano
中,按Ctrl+O
保存文件,然后按Ctrl+X
退出编辑器。
重启 PostgreSQL 服务
在进行上述配置更改后,重启 PostgreSQL 服务以使更改生效:
sudo systemctl restart postgresql
检查防火墙设置
确保防火墙没有阻止从外部 IP 地址到 PostgreSQL 服务器的连接。你可以使用 ufw
或其他防火墙工具来检查和配置防火墙。
如果你使用 ufw
,可以运行以下命令来允许 PostgreSQL 端口(默认是 5432):
sudo ufw allow 5432/tcp
验证连接
尝试从外部 IP 地址连接到 PostgreSQL:
psql -U postgres -h <外部IP地址> -W