0 测试环境准备

配置软件 版本
CentOS 7.0 Release (或以上)
PostgreSQL 12.x

1 PostgreSQL 安装

1.1 导入yum源

  1. sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

1.2 安装PostgreSQL服务

  1. sudo yum install -y postgresql12 postgresql12-server

安装PostgreSQL 11 就是 yum install postgresql12 postgresql12-server 安装PostgreSQL 9.5 就是 yum install postgresql95 postgresql95-server 以此类推

1.3 数据库初始化

  1. sudo /usr/pgsql-12/bin/postgresql-12-setup initdb

Initializing database … OK

1.4 启动 PostgreSQL 服务

sudo systemctl start postgresql-``12

启动PostgreSQL服务

sudo systemctl enable postgresql-``12

设置PosgreSQL服务为开机启动

Tip: 若配置9.x版本的数据库服务名就是 postgresql-9x

2 修改 postgres(默认超级用户)账号密码

PostgreSQL 安装成功之后,会默认创建一个名为postgres的Linux用户,初始化数据库后,会有名为postgres的数据库,来存储数据库的基础信息,例如用户信息等等,相当于MySQL中默认的名为mysql数据库。
postgres数据库中会初始化一名超级用户 ``postgres`` ,为了方便我们使用postgres账号进行管理,我们可以修改该账号的密码。

2.1 进入PostgreSQL命令行状态

通过su命令切换linux用户为postgres会自动进入命令行

  1. su - postgres

2.2 启动PostgreSQL SQL Shell

  1. psql

2.3 修改账号密码

  1. ALTER USER postgres WITH PASSWORD '新密码';

将「新密码」修改为相关字符,如 xyz123 ;

3 为数据库配置远程访问

3.1 开发端口(系统已开启防火墙功能)

  1. sudo firewall-cmd --add-port=5432/tcp --permanent
  2. sudo firewall-cmd --reload
  • 系统防火墙相关管理命令

    · 启动/禁用自启/禁用/开机自启:systemctl start/disable/stop/enable firewalld
    · 重启:firewall-cmd --reload
    · 查看状态:systemctl status firewalld or firewall-cmd --state
    参考:[https://blog.csdn.net/u011846257/article/details/54707864](https://blog.csdn.net/u011846257/article/details/54707864)

3.2 修改IP绑定

  • 修改配置文件
    1. vi /var/lib/pgsql/12/data/postgresql.conf

    将监听地址修改为 *

    默认listen_addresses配置是注释掉的,所以可以直接在配置文件开头加入该行

    listen_addresses``=``'*'

3.3 允许所有IP访问

  • 修改配置文件
    1. vi /var/lib/pgsql/12/data/pg_hba.conf

    在文件尾部加入

    host all all 0.0.0.0/0 md5

3.4 重启PostgreSQL服务

  1. sudo systemctl restart postgresql-12

配置完成后即可用数据库管理客户端进行访问连接;

4 PostgreSQL Shell常用语法

首先启动SQL Shell:

  1. su - postgres
  2. psql

4.1 数据库相关语法

  1. #创建数据库
  2. CREATE DATABASE mydb;
  3. #查看所有数据库
  4. \l
  5. #切换当前数据库
  6. \c mydb
  7. #创建表
  8. CREATE TABLE test(id int,body varchar(100));
  9. #查看当前数据库下所有表
  10. \d

4.2 用户与访问权限语法

  1. #新建用户test(密码也为test)
  2. CREATE USER test WITH PASSWORD 'test';
  3. #赋予指定账户指定数据库所有权限
  4. GRANT ALL PRIVILEGES ON DATABASE mydb TO test;
  5. #移除指定账户指定数据库所有权限
  6. REVOKE ALL PRIVILEGES ON DATABASE mydb TO test

权限代码:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、TRIGGER、CREATE、CONNECT、TEMPORARY、EXECUTE、USAGE 等

参考:[https://www.runoob.com/postgresql/postgresql-privileges.html](https://www.runoob.com/postgresql/postgresql-privileges.html)

5 其它

本文引自:Ken的杂谈

:::info 备注:以上操作,均经验证,所涉及代码可直接引用。 :::