PostgreSQL安装以及使用

概览:

Install

各个版本下载点:PostgreSQL binaries

以version10.9为例

1
2
wget http://sbp.enterprisedb.com/getfile.jsp?fileid=11696
tar -zxvf 文件名

设置环境变量,仅供参考。PGDATA:PostgreSQL数据库簇路径。

1
2
3
PGSQL_HOME="pgsql路径" # /home/mardan/PG_database/pgsql
export PGDATA="数据库簇路径" # /home/mardan/PG_database/db_home
export PATH=${PATH}:${PGSQL_HOME}/bin

Check:

1
postgres --version

输出:postgres (PostgreSQL) 10.9即为正确

Using

在你能做任何事情之前,你必须在磁盘上初始化一个数据库存储区域。我们称之为一个数据库集簇(SQL标准使用的术语是目录集簇)。一个数据库集簇是被一个运行数据库服务器的单一实例所管理的多个数据库的集合。在初始化之后,一个数据库集簇将包含一个名为postgres的数据库,它表示被功能、用户和第三方应用所使用的默认数据库。数据库服务器本身并不要求postgres数据库存在。另一个在初始化过程中为每一个集簇创建的数据库被称为template1。顾名思义,它将被用于创建后续数据库的模板;它不应该被用于实际工作。

在文件系统术语中,一个数据库集簇是一个单一目录,所有数据都将被存储在其中。我们称它为数据目录数据区域。在哪里存储你的数据完全由你选择。没有默认的位置,不过/usr/local/pgsql/data/var/lib/pgsql/data位置比较流行。要初始化一个数据库集簇,使用和PostgreSQL一起安装的命令initdb。你的数据库集簇的文件系统位置由-D选项指定,也即上面的环境变量PGDATA.

1
initdb

log信息:

连接数据库,先查看服务器IP地址

1
ifconfig

在客户机安装pgAdmin。并启动之,会在浏览器启动会话,如下图。

点击Servers选择创建服务器。

填写名称,只作为本地标识。

打开Connection标签

  • 填写ip,以我为例:192.168.19.130
  • 端口,默认5432
  • 用户名,服务器用户名
  • 密码,服务器,前面用户名对应的密码

启动postgresql服务

Problem

  • 远程访问
  • 用户不在信任列表

如果出现以下错误,pgAdmin重新连接。

就需要设置对服务器端访问网段添加信任。先Ctrl+C关闭Postgresql数据库。然后打开PGDATA目录,编辑postgresql.conf文件。将行开头都#去掉,将行内容修改为listen_addresses='*'来允许数据库服务器监听来自任何主机的连接请求,然后再次启动Postgresql,pgAdmin重新连接。

再次关闭Postgresql.

编辑PDGATA下的pg_hba.conf文件.

在其中以下段中

1
2
3
4
5
6
7
8
9
10
11
12
13
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust

加入

1
host    all             all             192.168.19.1/24         trust

最终加在以下文字第8行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 192.168.19.1/24 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust

启动Postgresql,pgAdmin重新连接。

Reference