linux Ubuntu 安装postgrsql

1. 安装 PostgreSQL 12

  1. 添加 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'
    
  2. 导入存储库的签名密钥:

    wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    
  3. 更新包列表:

    sudo apt update
    
  4. 安装 PostgreSQL 12:

    sudo apt install postgresql-12
    

2. 配置数据目录到指定的数据盘

假设你要将数据目录移动到 /mnt/data/postgresql/12/main,请按照以下步骤操作:

  1. 停止 PostgreSQL 服务:

    sudo systemctl stop postgresql
    
  2. 创建新的数据目录:

    sudo mkdir -p /mnt/data/postgresql/12/main
    sudo chown -R postgres:postgres /mnt/data/postgresql
    sudo chmod 700 /mnt/data/postgresql/12/main
    
  3. 初始化新的数据目录:

    sudo -u postgres /usr/lib/postgresql/12/bin/initdb -D /mnt/data/postgresql/12/main
    
  4. 修改 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'
    
  5. 更新 PostgreSQL 环境配置文件:
    编辑 PostgreSQL 环境配置文件 /etc/postgresql/12/main/environment,添加或修改 PGDATA 变量:

    sudo nano /etc/postgresql/12/main/environment
    

    添加或修改为:

    PGDATA = '/mnt/data/postgresql/12/main'
    
  6. 重新加载 systemd 配置:

    sudo systemctl daemon-reload
    
  7. 启动 PostgreSQL 服务:

    sudo systemctl start postgresql
    
  8. 验证 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 文件

  1. 编辑 pg_hba.conf 文件

    sudo nano /etc/postgresql/12/main/pg_hba.conf
    
  2. 添加以下行

    允许所有 IPv4 地址访问:

    host    all             all             0.0.0.0/0               md5
    

    如果你还需要允许所有 IPv6 地址访问,可以添加:

    host    all             all             ::/0                    md5
    
  3. 保存并关闭文件

    nano 中,按 Ctrl+O 保存文件,然后按 Ctrl+X 退出编辑器。

修改 postgresql.conf 文件

确保 PostgreSQL 配置文件 postgresql.conf 中的 listen_addresses 设置为 '*',以监听所有 IP 地址。

  1. 编辑 postgresql.conf 文件

    sudo nano /etc/postgresql/12/main/postgresql.conf
    
  2. 找到 listen_addresses 配置项并修改

    listen_addresses = '*'
    
  3. 保存并关闭文件

    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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值