• PostgreSQL安装详细步骤(linux)


     官方安装文档:http://www.postgresql.org/download/linux/redhat/

    1. 检查PostgreSQL 是否已经安装

    Linux-软件包管理-rpm命令管理-查询

    rpm -qa | grep postgres    检查PostgreSQL 是否已经安装
    rpm -qal | grep postgres 检查PostgreSQL 安装位置

    若已经安装,则使用rpm -e 命令卸载。

    rpm -e postgresql94-contrib-9.4.4-1PGDG.rhel6.x86_64 postgresql94-server-9.4.4-1PGDG.rhel6.x86_64  卸载
    rpm -e postgresql94-libs-9.4.4-1PGDG.rhel6.x86_64 postgresql94-9.4.4-1PGDG.rhel6.x86_64  卸载

    可以使用rpm -qa | grep postgres再次查看是否还有Postgres安装文件,没有卸载完成。

     2.使用yum库设置安装postgresql94版本,最好先创建用户组和用户:

    (1)新增postgres用户组:

    groupadd postgres

    (2)新增postgres用户并且设置这个用户属于上面创建的postgres用户组:

    useradd -g postgres postgres

    (3)修改postgres用户密码:passwd postgres(这里设置密码为postgres

    passwd postgres  --修改postgres用户密码
    yum install http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm  使用yum库

    3.安装postgresql94

    yum search postgresql     //也可以先找一下,server版会有多个,决定选择装哪个
    yum -y install postgresql94-server postgresql94-contrib   //安装postgresql94

     注意:如果出现错误,首先停止服务查看服务名称chkconfig --list找到postgresql的服务名,注意服务名可能会带有版本号,service 服务名 stop,然后使用rpm -e卸载命令,然后在执行上面的安装就可以了

    安装成功

    可以使用rpm -qal|grep postgres这个命令查看安装文件的位置,注意默认的postgresql配置文件的位置和名称(带有版本号)

    查看/etc/rc.d/init.d/postgresql-9.4文件中的PGDATA信息,并显示行号。

    cat /etc/rc.d/init.d/postgresql-9.4 | grep -n PGDATA -n显示行号

    上图说明默认数据库文件的安装位置是在:/var/lib/pgsql/9.4/data,如果需要改变数据库文件的存放位置可以修改这里,下面会介绍如何修改默认数据库文件的存放位置。先看看这个目录里面有没有数据库的文件:

    ls -la /var/lib/pgsql/9.4/data 查看这个目录里面的内容

    上图说明postgresql安装完成之后,默认数据库文件存放所使用的目录是空的。

    下面的内容比较重要,介绍postgresql数据库如何安装:

    一、如何更改默认数据库安装位置,安装postgresql数据库

    Linux添加/删除用户和用户组

    1、删除postgres用户和他的文件信息(如果之前安装过)

    userdel -r postgres

    2、删除postgres用户组(如果之前安装过)

    groupdel postgres

    (1)新增postgres用户组:

    groupadd postgres

    (2)新增postgres用户并且设置这个用户属于上面创建的postgres用户组:

    useradd -g postgres postgres

    (3)修改postgres用户密码:passwd postgres(这里设置密码为postgres

    passwd postgres   --修改postgres用户密码

    创建数据库文件存放的目录:/mnt/pgsql/data

    mkdir -p /mnt/pgsql/data 递归方式创建pgsql/data目录

    默认刚建立的目录/mnt/pgsql和/mnt/pgsql/data的所有者和所有组都是root,需要修改为postgres用户和用户组。

    chown -R postgres:postgres /mnt/pgsql
    ll /mnt
    chown -R postgres:postgres /mnt/pgsql/data
    ll /mnt/pgsql

    查看是否已经更改为postgres用户和用户组了。

    接下来就是要修改默认数据库文件存放路径了:

    修改postgresql数据库的配置文件(/etc/rc.d/init.d/postgresql-9.4)中的PGDATA和PGLOG改成我们自己创建的目录:/mnt/pgsql:

    PGDATA=/mnt/pgsql/data
    PGLOG=/mnt/pgsql/pgstartup.log

    保存之后,继续查询initdb文件的存放位置:

    find / -name initdb 查找initdb 的安装位置

     

    指定数据库存放位置和编码方式,初始化数据库:

    /usr/pgsql-9.4/bin/initdb -E UNICODE -D /mnt/pgsql/data

     

     注意: 出现上面的错误说明Postgresql不能以root身份初始化,要以postgres用户的身份运行,所以上面要创建linux用户postgres和组postgres

    切换postgres用户执行初始化数据库操作

    su - postgres  切换用户
    /usr/pgsql-9.4/bin/initdb -E UNICODE -D /mnt/pgsql/data --初始化数据库
    cd /mnt/pgsql/data 切换目录
    ll 查询初始化数据库成功之后的目录内容

    编辑postgresql.conf文件,修改数据库默认接收的监听地址与端口参数:

    cat postgresql.conf | grep -n listen_addresses  查找listen_addresses在postgresql.conf文件中的位置并显示行号
    vi postgresql.conf 编辑postgresql.conf文件

    查询listen_addresses的值:

    修改前listen_addresses的值:

    去掉59行的注释,将listen_addresses = 'localhost' 改成 listen_addresses = '*',下图是修改后listen_addresses的值:

    接下来继续修改pg_hba.conf文件,告诉数据库服务器它将允许什么样的客户端连接到自己:

    vi pg_hba.conf --修改postgresql服务连接文件

    修改前的源文件:

    在86行下面增加一行,表示允许任何一个客户端使用正确的用户名和密码访问自己:

    host    all             all             0.0.0.0/0               trust

    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    
    # "local" is for Unix domain socket connections only
    local   all             all                                     trust或peer
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            trust
    host    all             all             0.0.0.0/0               password
    # IPv6 local connections:
    host    all             all             ::1/128                 password
    # Allow replication connections from localhost, by a user with the
    # replication privilege.
    #local   replication     postgres                                peer
    #host    replication     postgres        127.0.0.1/32            ident
    #host    replication     postgres        ::1/128                 ident

    备注:设置 trust,本地可以使用psql -U postgres直接登录服务器;设置 peer,本地可以使用psql -h 127.0.0.1 -d postgres -U postgres直接登录服务器;

    exit --返回root用户

    chkconfig --list 查看所有服务并找到postgre的服务名称

    默认postgresql-9.4不是自启动的,我们需要设置postgresql-9.4服务为自启动服务:

    chkconfig postgresql-9.4 on  设置服务自启动
    chkconfig --list

    service postgresql-9.4 status 查看服务状态
    service postgresql-9.4 start 启动postgresql-9.4服务

     

    有三种方式可以查看postgresql运行是否运行

    ps -ef | grep postgres  查postgres的进程信息
    netstat -tpnl | grep 5432   查postgres的端口号5432是否已经打开
    service postgresql-9.4 status 查看服务状态

     

     开始连接postgresql数据库:

    psql -U postgres //连接pgsql server
    psql -h 127.0.0.1 -d postgres -U postgres //连接pgsql server

    看到上图表示连接数据库成功了。

    修改配置文件pg_hba.conf之后,登录数据库重新刷新更新后的配置命令:

    select pg_reload_conf();

    show data_directory;

    为数据库默认的登陆名postgres(等同于SQLServer里面的sa)设置登陆数据库的密码:

    ALTER USER postgres WITH PASSWORD '1234'; //添加密码
    select * from pg_shadow;
    q回车 退出登录

    设置防火墙

    iptables -I INPUT -p tcp --dport 22 -j ACCEPT
    iptables -I INPUT -p tcp --dport 5432 -j ACCEPT
    service iptables save
    service iptables restart 
    cat /etc/sysconfig/iptables

    二、采用默认的方式安装postgresql数据库文件:

    直接执行下面的命令,都不需要创建linux用户:

    service postgresql-9.4 initdb

    如果启动过程中报错了,例如:Data directory is not empty![失败],估计是卸载出了问题,删除/var/lib/pgsql目录下面所有文件,使用rpm -e 命令卸载重新安装.

    cd /var/lib/pgsql/data
    cd /var/lib/pgsql
    cd /var/lib
    rm -rf /var/lib/pgsql
    ll /var/lib

    rpm -e postgresql94-contrib-9.4.3-1PGDG.rhel6.x86_64 postgresql94-server-9.4.3-1PGDG.rhel6.x86_64 postgresql94-9.4.3-1PGDG.rhel6.x86_64 postgresql94-libs-9.4.3-1PGDG.rhel6.x86_64  卸载
    yum -y install postgresql94-server postgresql94-contrib  安装
    service postgresql-9.4 initdb  初始化数据库

    设置开机启动postgresql

    chkconfig postgresql-9.4 on 

     

    查看postgresql运行是否运行

    ps -ef | grep postgres  查postgres的进程信息
    netstat -tpnl |grep 5432   查postgres的端口号5432是否已经打开
    service postgresql-9.4 status 查看服务状态

    用postgres用户登录,并改密码

    su postgres  //切换用户

    如果出现下面的错误,需要重新运行postgresql的服务,若想psql能直接登陆,再重启一下DB,socket文件会随着服务器的启动而生成。

    ps -ef | grep postgre 查postgre进程

    kill -9 31308
    service postgresql-9.4 status
    service postgresql-9.4 stop
    service postgresql-9.4 start

    su postgres  //切换用户
    psql -U postgres    //连接pgsql server  

    ALTER USER postgres WITH PASSWORD '1234'; //添加密码
    select * from pg_shadow;

    q 退出

    如果出现下面这个错误

    需要继续创建文件

    touch /home/postgres/.psql_history 创建这个文件
    chmod -R g+w  /home/postgres  提升postgres这个目录的权限
    chmod a+w /home/postgres/.psql_history 提升.psql_history这个文件的权限

    修改/var/lib/pgsql/9.4/data/postgresql.conf(这个文件是默认的安装位置)

    vi /var/lib/pgsql/9.4/data/postgresql.conf 修改postgresql的配置文件

    去掉59行的注释,将listen_addresses = 'localhost' 改成 listen_addresses = '*'

    修改/var/lib/pgsql/9.4/data/pg_hba.conf(这个文件是默认的安装位置)

    vi /var/lib/pgsql/9.4/data/pg_hba.conf 修改postgresql服务连接文件

    第80行:peer改称md5,本地就可以连接自己了。

    在82行下面增加一行

    host    all             all             192.168.6.0/24          md5  允许192.168.0.0网段连接
    host    all         all        0.0.0.0/0         md5  允许所有IP连接

    关闭防火墙

    service iptables stop

    重启postgresql的服务

    service postgresql-9.4 restart

    三、使用客户端工具就可以连接成功了!

    Navicat for PostgreSQL

    pgAdmin III

     转自:http://www.postgresql.org/download/linux/redhat/

    http://www.cnblogs.com/mchina/archive/2012/06/06/2539003.html

    http://blog.51yip.com/pgsql/1520.html

  • 相关阅读:
    django 模型ManyToMany 关联的添加,删除,查询
    js 购物车的数量加减,对应的总价也随机变化
    `Java`中`abstract class`与`interface`区别
    基于Netty的IdleStateHandler实现Mqtt心跳
    由MQTT topic的正则表达式匹配引发的特殊字符"/"匹配思考
    Maven项目配置Logback输出JSON格式日志
    MySql定时备份脚本
    使用tcpdump监控http流量
    Linux磁盘信息查询及删除文件操作
    基于Morphia实现MongoDB按小时、按天聚合操作
  • 原文地址:https://www.cnblogs.com/qiyebao/p/4562557.html
Copyright © 2020-2023  润新知