Postgresql笔记(一)安装/配置/启动/运行多个实例

系统版本:Ubuntu 16.04

一. 安装:

  • sudo apt-get install postgresql
  • 安装9.4或者其他低版本:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

sudo apt-get update

sudo apt-get install postgresql-9.4

二. 启动

  • 启动服务:sudo service postgresql start
  • 切换至postgres用户:sudo -su postgres
  • 进入控制台:psql
    Postgresql笔记(一)安装/配置/启动/运行多个实例_第1张图片
    登录成功

    以上为一些基本的准备操作,其他命令可以参考: http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html

三. 配置

  1. 输入 ps -ef | grep postgres看一下进程信息可以发现postgres的service启动命令是这样的:
    postgres-service

    也就是说当前postgres的数据库文件是/var/lib/postgresql/9.5/main,配置文件是/etc/postgresql/9.5/main/postgresql.conf
  2. 看一下config文件,还是很友好,比较容易理解
    Postgresql笔记(一)安装/配置/启动/运行多个实例_第2张图片
    postgresql.conf

    这里指定了一个hba_file也就是pg_hba.conf(host-based authentication)就是配置数据库的访问权限,默认只能localhost访问
  3. 看一下hba.conf
    Postgresql笔记(一)安装/配置/启动/运行多个实例_第3张图片
    pg_hba.conf

    第一行local all postgres peer解释为:连接本地postgres数据库的时候只要系统切换到postgres用户即可登陆,并且可以访问任何数据库;如果给peer改成trust(改完重启服务),则可以实现linux所有本地用户都可以用 psql -U postgres来连接数据库;md5就是需要密码访问psql -U xxx -WPGPASSWORD=... psql -U ... -d ...
  4. 开放远程访问:
    修改postgresql.conf,取消注释或者加一行 listen_addresses = '*'
    修改pg_hba.conf,增加一行
    # TYPE  DATABASE  USER  CIDR-ADDRESS  METHOD
      host  all        all   0.0.0.0/0     md5
    

四. 运行多个实例

切换至postgres用户并创建数据库文件,就在默认库隔壁来一个吧

sudo -su postgres
/usr/lib/postgresql/9.5/bin/pg_ctl init -D /var/lib/postgresql/9.5/main_2

这里有一些提示信息,先不管

Postgresql笔记(一)安装/配置/启动/运行多个实例_第4张图片
pg_ctl init

在main_2目录里默认给我们生成了pg_hba.conf和postgres.conf,查看一下postgres.conf发现没指定端口和hba_path,可以copy之前的conf文件 /etc/postgresql/9.5/main/postgresql.conf到main_2目录,修改:

data_directory = '/var/lib/postgresql/9.5/main_2'
hba_file = '/var/lib/postgresql/9.5/main_2/pg_hba.conf'
ident_file = '/var/lib/postgresql/9.5/main_2/pg_ident.conf'
external_pid_file = '/var/run/postgresql/9.5-main-2.pid'
#不能跟之前一个一样
port = 5433

再启动服务

/usr/lib/postgresql/9.5/bin/pg_ctl -D /var/lib/postgresql/9.5/main_2 -l /var/log/postgresql/pg_5433.log start
成功启动两个实例

Postgresql笔记(一)安装/配置/启动/运行多个实例_第5张图片
登陆另一个实例

同理如果是从生产环境下直接下载下来的数据库文件,解压后也是同样方式运行,修改pg_hba.conf和postgres.conf文件即可

你可能感兴趣的:(Postgresql笔记(一)安装/配置/启动/运行多个实例)