PostgreSQL — 安装

举报
云物互联 发表于 2021/08/06 01:49:59 2021/08/06
【摘要】 目录 文章目录 目录安装(基础版本 9.2.24)安装(特定版本 12.2)登录远程登录创建新的用户和新的数据库 安装(基础版本 9.2.24) # 安装 PG 服务器 yum install postgresql-server -y # 安装 PG 客户端(可选) yum install postgresql -y 12345 注:在 CentO...

目录

安装(基础版本 9.2.24)

# 安装 PG 服务器
yum install postgresql-server -y

# 安装 PG 客户端(可选)
yum install postgresql -y

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

注:在 CentOS7 上使用 YUM 安装 postgresql-server 会附带安装上 postgres 客户端,因此不必重复安装。

YUM 源 PostgreSQL 的版本是 9.2.24,安装完成后,相关的操作命令 psql、postgresql-setup 会添加到 /usr/bin 目录下,可以在命令行下直接使用。

$ psql --version
psql (PostgreSQL) 9.2.24

  
 
  • 1
  • 2

安装的同时还会创建 postgres 用户,Home 为 /var/lib/pgsql,需要切换到 postgres 用户下才可以通过 psql 访问数据库服务。

$ cat /etc/passwd | grep postgres
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash

  
 
  • 1
  • 2

安装完成之后,不能直接启动数据库进程,需要先执行初始化。初始化过程会生成 PostgreSQL 的配置文件和存放数据库数据的数据库文件,路劲为 /var/lib/pgsql/data。

$ postgresql-setup initdb

$ l /var/lib/pgsql/data
总用量 48
drwx------ 5 postgres postgres 41 8月  20 18:15 base
drwx------ 2 postgres postgres  4096 8月  20 18:15 global
drwx------ 2 postgres postgres 18 8月  20 18:15 pg_clog
-rw------- 1 postgres postgres  4232 8月  20 18:15 pg_hba.conf
-rw------- 1 postgres postgres  1636 8月  20 18:15 pg_ident.conf
drwx------ 2 postgres postgres 58 8月  21 00:00 pg_log
drwx------ 4 postgres postgres 36 8月  20 18:15 pg_multixact
drwx------ 2 postgres postgres 18 8月  20 18:15 pg_notify
drwx------ 2 postgres postgres 6 8月  20 18:15 pg_serial
drwx------ 2 postgres postgres 6 8月  20 18:15 pg_snapshots
drwx------ 2 postgres postgres 25 8月  21 16:21 pg_stat_tmp
drwx------ 2 postgres postgres 18 8月  20 18:15 pg_subtrans
drwx------ 2 postgres postgres 6 8月  20 18:15 pg_tblspc
drwx------ 2 postgres postgres 6 8月  20 18:15 pg_twophase
-rw------- 1 postgres postgres 4 8月  20 18:15 PG_VERSION
drwx------ 3 postgres postgres 60 8月  20 18:15 pg_xlog
-rw------- 1 postgres postgres 19844 8月  20 18:15 postgresql.conf
-rw------- 1 postgres postgres 57 8月  20 18:15 postmaster.opts
-rw------- 1 postgres postgres 91 8月  20 18:15 postmaster.pid

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

启动服务,默认监听本机 127.0.0.1 的 5432 端口。

$ systemctl start postgresql

  
 
  • 1

安装(特定版本 12.2)

# 导入 YUM 源
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 安装 PostgreSQL 12 服务
yum install -y postgresql12 postgresql12-server

# 初始化数据库
/usr/pgsql-12/bin/postgresql-12-setup initdb 

# 启动 PostgreSQL 服务
systemctl start postgresql-12
systemctl enable postgresql-12

# 加载 psql 指令
vi ~/.bashrc
export PATH=$PATH:/usr/pgsql-12/bin
source ~/.bashrc

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

登录

默认的,只有在 CentOS 中使用 postgres 用户才可以通过 PostgreSQL 的 postgres 用户登录到 postgres 数据库。否则会触发错误:

$ psql postgres
psql: 致命错误:  角色 "root" 不存在
$ psql -U postgres
psql: 致命错误:  对用户"postgres"的对等认证失败

  
 
  • 1
  • 2
  • 3
  • 4
  • -U, --username=用户名 指定数据库用户名(缺省:“root”)

这是因为 PostgreSQL 实现了很多基于 Bash 的指令,这些指令显然只能在特定的用户下才能使用。

需要修改 pg_hba.conf 中的配置让 Root 用户和 postgres 用户是对等可信的:

# TYPE  DATABASE USER ADDRESS METHOD

# "local" is for Unix domain socket connections only
local   all all trust

  
 
  • 1
  • 2
  • 3
  • 4

另外,需要修改 postgresql.conf 中的 listen_addresses 配置:

#listen_addresses = 'localhost' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost'; use '*' for all # (change requires restart)
listen_addresses = '*'

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

并在 pg_hba.conf 中添加:

host all all 0.0.0.0/0 md5

  
 
  • 1

重启服务生效:

systemctl restart postgresql.service

  
 
  • 1

再次查看服务进程的监听端口,修改为了 any 0.0.0.0:

$ netstat -npltu | grep postgres
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 11451/postgres
tcp6 0 0 :::5432 :::* LISTEN 11451/postgres

  
 
  • 1
  • 2
  • 3

再次通过 Root 用户使用 psql -U postgres 进行登录:

$ psql postgres
psql: 致命错误:  角色 "root" 不存在
$ psql -U postgres
psql (9.2.24)
输入 "help" 来获取帮助信息.

postgres-# \l 资料库列表 名称 |  拥有者  | 字元编码 |  校对规则   | Ctype | 存取权限
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
 template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres
 template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres
(3 行记录)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

远程登录

注意,在 PostgreSQL Server 本地进行登录是不需要提供密码的,但远程登录需要。所以为了启用远程登录,首先需要设定用户的密码。有两种方式:

  1. 执行 \password 指令。
  2. 执行 alter user postgres with password ‘{your_pwd}’ SQL 语句。

默认的,PostgreSQL 内置了 postgres 数据库和 postgres 用户,所以我们已修改 postgres 用户的密码为例:

  1. 使用 postgres 账户登录到 postgres 数据库;
psql -d postgres -U postgres

  
 
  • 1
  1. 执行 /password 指令,并输入 postgres 用户的密码。
postgres=# \password
输入新的密码:
再次键入:
postgres=# \q

  
 
  • 1
  • 2
  • 3
  • 4
  1. 修改密码后,使用 postgres 账户进行远程登录就要使用密码进行身份认证了。
$ psql --host=172.18.22.204 --port=5432 --dbname=postgres --username=postgres -W
用户 postgres 的口令:
psql: 致命错误:  用户 "postgres" Password 认证失败

  
 
  • 1
  • 2
  • 3

创建新的用户和新的数据库

  • 创建用户
create user ‘{username}’ with password '{password}';

  
 
  • 1
  • 创建数据库
create database ‘{database}’ owner ‘{username}’;

  
 
  • 1
  • 将数据库权限全部赋给某个用户
grant all on database ‘{database}’ to ‘{username}’;

  
 
  • 1
  • 通过文件导入数据库
psql -U ‘{username}’ ‘{database}’ < /data/dum.sql

  
 
  • 1

文章来源: is-cloud.blog.csdn.net,作者:范桂飓,版权归原作者所有,如需转载,请联系作者。

原文链接:is-cloud.blog.csdn.net/article/details/108129556

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。