Centos7 安装postgresql10

来自Linux78|wiki

更新源

地址:https://yum.postgresql.org/repopackages.php

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

安装postgresql

先查看postgresql源

yum list | grep postgresql

安装的是这两个。postgresql10-contrib postgresql10-server

yum install postgresql10-contrib postgresql10-server -y

初始化数据库

Postgresql安装目录是/usr/pgsql-10,而Postgresql的数据目录是/var/lib/pgsql/版本号/data目录

在这里,如果在装系统开始分配var空间足够大则可以继续,如果分配var空间不够,我们需要更改数据目录,在这里,我们假设var空间足够大。直接开始初始化。

/usr/pgsql-10/bin/postgresql-10-setup initdb
Initializing database ... OK

显示这个代表初始化成功

启动数据库并设置开机启动

sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10

登录postgresql并设置密码

postgresql在安装时默认添加用户postgres

su - postgres
psql
ALTER USER postgres WITH PASSWORD '密码';
退出:\q

备注其他:列出所有库\l 列出所有用户\du 列出库下所有表\d

持远程登录

默认情况下postgresql是不用密码不支持远程登录的。我们需要修改配置文件

vi /var/lib/pgsql/10/data/pg_hba.conf
添加
host    all    all    0.0.0.0/0     md5

改远程访问

vi /var/lib/pgsql/10/data/postgresql.conf
listen_addresses = '*'
port = 5432

重启postgresql

systemctl restart postgresql-10

登录postgresql

postgresql在安装时默认添加用户postgres

输入

su - postgres
psql

此时已经可以进行验证密码

客户端登录验证

测试创建数据库及创建用户

因为postgres属于superuser,我们需要创建部分低权限用户

创建数据库

CREATE DATABASE testdb;

创建用户

CREATE USER testuser CREATEDB LOGIN PASSWORD 'testpassword';

将testdb所有权限赋给用户testuser

GRANT ALL ON DATABASE testdb TO testuser;

查看现有数据库及用户

postgres=# \l
                                 List of databases
  Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
          |          |          |             |             | postgres=CTc/postgres
template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
          |          |          |             |             | postgres=CTc/postgres
testdb    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres         +
          |          |          |             |             | postgres=CTc/postgres+
          |          |          |             |             | testuser=CTc/postgres


删除数据库及测试用户

删除数据库

drop database testdb;

删除用户

drop role testuser;