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

 

四、備份腳本

 1 cat /data/pgsql_data_backup.sh
 2 #!/bin/sh
 3 ##刪除倆天以前的備份文件
 4 find /data/backup/ -mtime +2  -exec rm -rf {} \;
 5 ## 備份pgsql
 6 DATE=`date +%Y%m%d%H%M%S`
 7 TAR_FILE_PATH="/data/backup/$DATE"
 8 if [ ! -f "$TAR_FILE_PATH" ]; then  
 9    mkdir -p  "$TAR_FILE_PATH"  
10 fi  
11 
12 /usr/pgsql-9.4/bin/pg_dump --host localhost --port 5432 --username postgres --role postgres --no-password --dbname sem_view --format t --blobs --encoding UTF8 --file $TAR_FILE_PATH/sem_view.tar
pgsql_data_backup.sh

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM