---
title: "CentOS7 安装 Postgresql"
date: 2019-10-30T00:48:54+08:00
lastmod: 2019-11-04T02:03:00+08:00
keywords: []
tags: ["postgresql"]
categories: ["database"]
---

## 环境
- CentOS 7
- PostgreSQL 10.10

## 安装
- 安装 yum 源
    ```bash
    yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    # 或者从清华镜像站下载
    yum install https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    # 可以更换成清华镜像站地址
    sed -i 's,download.postgresql.org/pub,mirrors.tuna.tsinghua.edu.cn/postgresql,' /etc/yum.repos.d/pgdg-redhat-all.repo
    # 更新 yum 缓存
    yum clean all
    yum makecache fast
    ```
- 安装 postgresql-server
    ```bash
    yum install postgresql10-server
    ```
- 初始化数据库
    ```bash
    /usr/pgsql-10/bin/postgresql-10-setup initdb
    ```
- 启动数据库
    ```bash
    systemctl start postgresql-10
    ```

## 配置 postgresql.conf
- 监听本机全部地址
    ```
    clisten_addresses = '*'
    ```

## 配置 pg_hba.conf
- 配置同网段客户端可通过 pguser1 使用密码登陆 pgdb1
    ```bash
    echo 'host pgdb1 pguser1 samenet md5' >> pg_hba.conf
    ```
- 配置任何客户端可通过任何用户使用密码登陆任何数据库
    ```bash
    echo 'host all all all md5' >> pg_hba.conf
    ```

## 简单使用
- 登陆数据库
    ```bash
    su - postgres
    psql -U postgres
    ```
- 简单操作
    ```sql
    -- 修改 postgres 用户的默认密码
    alter user postgres with password '123456';
    -- 创建新用户 pguser1
    create user pguser1 with password '123456';
    -- 创建数据库 pgdb1
    create database pgdb1 owner pguser1 encoding utf8;
    -- 授权
    grant all on database pgdb1 to pguser1;
    -- 查看系统操作帮助
    \?
    -- 查看 sql 语句操作帮助
    \h
    -- 查看建库语句操作
    \h create database
    -- 退出数据库
    \q
    ```

## 迁移数据库目录
- 停止数据库 postgresql
    ```bash
    systemctl stop postgresql-10
    ```
- 移动数据库目录
    ```bash
    mkdir -p /data/pgsql/10
    mv /var/lib/pgsql/10/data /data/pgsql/10/
    chown -R postgres.postgres /data/pgsql
    ```
- 修改 service 文件
    ```bash
    sed -i 's,/var/lib/pgsql/10,/data/pgsql/10,' /usr/lib/systemd/system/postgresql-10.service
    systemctl daemon-reload
    ```
- 启动数据库
    ```bash
    systemctl start postgresql-10
    ```

