下面我们就以CentOS系统为例,给大家讲解一下Postgresql的安装过程。
1.使用yum安装postgresql
@H_502_28@[pengchengxiang@localhost ~]$ sudo yum install postgresql-server.x86_64
Loaded plugins: fastestmirror,refresh-packagekit,security
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: mirrors.btte.net
* extras: mirror.bit.edu.cn
* updates: mirror.bit.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package postgresql-server.x86_64 0:8.4.20-3.el6_6 will be installed
--> Processing Dependency: postgresql(x86-64) = 8.4.20-3.el6_6 for package: postgresql-server-8.4.20-3.el6_6.x86_64
--> Running transaction check
---> Package postgresql.x86_64 0:8.4.20-3.el6_6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
postgresql-server x86_64 8.4.20-3.el6_6 updates 3.4 M
Installing for dependencies:
postgresql x86_64 8.4.20-3.el6_6 updates 2.6 M
Transaction Summary
================================================================================
Install 2 Package(s)
Total download size: 6.0 M
Installed size: 28 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): postgresql-8.4.20-3.el6_6.x86_64.rpm | 2.6 MB 00:02
(2/2): postgresql-server-8.4.20-3.el6_6.x86_64.rpm | 3.4 MB 00:06
--------------------------------------------------------------------------------
Total 680 kB/s | 6.0 MB 00:09
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : postgresql-8.4.20-3.el6_6.x86_64 1/2
Installing : postgresql-server-8.4.20-3.el6_6.x86_64 2/2
Verifying : postgresql-8.4.20-3.el6_6.x86_64 1/2
Verifying : postgresql-server-8.4.20-3.el6_6.x86_64 2/2
Installed:
postgresql-server.x86_64 0:8.4.20-3.el6_6
Dependency Installed:
postgresql.x86_64 0:8.4.20-3.el6_6
Complete!
@H_502_28@[pengchengxiang@localhost ~]$ sudo service postgresql initdb
Initializing database: [ OK ]
2.启动postgresql服务
@H_502_28@[pengchengxiang@localhost ~]$ sudo service postgresql start
Starting postgresql service: [ OK ]
3.查看postgresql的服务状态
@H_502_28@[pengchengxiang@localhost ~]$ sudo service postgresql status
postmaster (pid 3496) is running...
@H_502_28@[pengchengxiang@localhost ~]$ sudo service postgresql start
/var/lib/pgsql/data is missing. Use "service postgresql initdb" to initialize the cluster first.
[Failed]
@H_502_28@[pengchengxiang@localhost ~]$ sudo su - postgres
-bash-4.1$ psql
psql (8.4.20)
Type "help" for help.
postgres=#
2.列出所有的数据库
@H_502_28@postgres=# \l
List of databases
Name | Owner | Encoding | Collation | 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
(3 rows)
@H_502_28@postgres=# \q
-bash-4.1$
@H_502_28@-bash-4.1$ ls -l /var/lib/pgsql/data/
total 80
drwx------. 5 postgres postgres 4096 Nov 16 23:55 base
drwx------. 2 postgres postgres 4096 Nov 16 23:55 global
drwx------. 2 postgres postgres 4096 Nov 16 23:55 pg_clog
-rw-------. 1 postgres postgres 3411 Nov 16 23:55 pg_hba.conf
-rw-------. 1 postgres postgres 1631 Nov 16 23:55 pg_ident.conf
drwx------. 2 postgres postgres 4096 Nov 17 00:00 pg_log
drwx------. 4 postgres postgres 4096 Nov 16 23:55 pg_multixact
drwx------. 2 postgres postgres 4096 Nov 17 00:02 pg_stat_tmp
drwx------. 2 postgres postgres 4096 Nov 16 23:55 pg_subtrans
drwx------. 2 postgres postgres 4096 Nov 16 23:55 pg_tblspc
drwx------. 2 postgres postgres 4096 Nov 16 23:55 pg_twophase
-rw-------. 1 postgres postgres 4 Nov 16 23:55 PG_VERSION
drwx------. 3 postgres postgres 4096 Nov 16 23:55 pg_xlog
-rw-------. 1 postgres postgres 16886 Nov 16 23:55 postgresql.conf
-rw-------. 1 postgres postgres 57 Nov 16 23:55 postmaster.opts
-rw-------. 1 postgres postgres 45 Nov 16 23:55 postmaster.pid
四、Postgrepsql的简单配置
1.修改监听的ip和端口
@H_502_28@# - Connection Settings -
#listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost','*' = all
# (change requires restart)
#port = 5432 # (change requires restart)
修改这两个参数之后,需要重启之后才能生效
@H_502_28@[pengchengxiang@localhost ~]$ sudo service postgresql restart
Stopping postgresql service: [ OK ]
Starting postgresql service: [ OK ]
ip和端口修改好,PostgreSQ 客户端连接可能还会出现如下问题 FATAL: no pg_hba.conf entry for host:
要解决这个问题,只需要在Postgresql数据库的安装目录下找到/data/pg_hba.conf,找到“# IPv4 local connections:”
在其下加上请求连接的机器IP
hostall all 127.0.0.1/32 md5
日志收集,一般是打开的
@H_502_28@# This is used when logging to stderr:
logging_collector = on # Enable capturing of stderr and csvlog
# into log files. required to be on for
# csvlogs.
# (change requires restart)
日志目录,一般使用默认值
@H_502_28@# These are only used if logging_collector is on:
log_directory = 'pg_log' # directory where log files are written,# can be absolute or relative to PGDATA
只保留一天的日志,进行循环覆盖
@H_502_28@log_filename = 'postgresql-%a.log' # log file name pattern,# can include strftime() escapes
log_truncate_on_rotation = on # If on,an existing log file of the
# same name as the new log file will be
# truncated rather than appended to.
# But such truncation only occurs on
# time-driven rotation,not on restarts
# or size-driven rotation. Default is
# off,meaning append to existing files
# in all cases.
log_rotation_age = 1d # Automatic rotation of logfiles will
# happen after that time. 0 disables.
log_rotation_size = 0 # Automatic rotation of logfiles will
3.内存参数的配置
@H_502_28@# - Memory -
shared_buffers = 32MB # min 128kB
# (change requires restart)
@H_502_28@# actively intend to use prepared transactions.
#work_mem = 1MB # min 64kB
推荐教程:http://www.postgres.cn/docs/9.4/index.html