Linux下的PostgreSQL安裝
1. 安裝環境
postgresql-11.1
CentOS-6.3
確認linux系統可以正常連線網路,因為在後面需要新增依賴包。
2. pg資料庫下載地址
http://www.postgresql.org/ftp/source/
3. 安裝依賴包
yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake
4. 安裝postgres
1)在根目錄下新建pgsql資料夾,並將pgsql的壓縮包移入。
[[email protected] pgsql]# ls
postgresql-11.1.tar.gz
[[email protected] pgsql]# pwd
//pgsql
2)解壓壓縮包
[[email protected] pgsql]# tar -zxvf postgresql-11.1.tar.gz
3)進入解壓後的資料夾
[[email protected] pgsql]# cd postgresql-11.1
[
aclocal.m4 configure contrib doc HISTORY Makefile src
config configure.in COPYRIGHT GNUmakefile.in INSTALL README
4)編譯postgresql原始碼
[[email protected] postgresql-11.1]# ./configure --prefix=/pgsql/postgresql
PostgreSQL配置指令碼選項
選項 | 描述 |
–prefix=prefix | 安裝到prefix指向的目錄;預設為/usr/local/pgsql |
–bindir=dir | 安裝應用程式到dir;預設為prefix/bin |
–with-docdir=dir | 安裝文件到dir;預設為prefix/doc |
–with-pgport=port | 設定預設的伺服器端網路連線服務TCP埠號 |
–with-tcl | 為服務端提供Tcl儲存過程支援 |
–with-perl | 為服務端提供Perl儲存過程支援 |
–with-python | 為服務端提供Python儲存過程支援 |
[[email protected] postgresql-11.1]# make
[[email protected] postgresql-11.1]# make install
至此,已完成postgreql的安裝。進入/pgsql/postgresql目錄可以看到安裝後的postgresql的檔案。
[[email protected] postgresql]# ls
bin include lib share
5. 建立使用者組postgres並建立使用者postgres
[[email protected] postgresql-11.1]# groupadd postgres
[[email protected] postgresql-11.1]# useradd -g postgres postgres
[[email protected] postgresql-11.1]# id postgres
uid=501(postgres) gid=501(postgres) 組=501(postgres)
6. 建立postgresql資料庫的資料主目錄並修改檔案所有者
這個資料庫主目錄是隨實際情況而不同,這裡我們的主目錄是在/pgsql/postgresql/data目錄下:
[[email protected] postgresql-11.1]# cd /pgsql/postgresql
[[email protected] postgresql]# mkdir data
[[email protected] postgresql]# chown postgres:postgres data
[[email protected] postgresql]# ls -al
總用量 28
drwxr-xr-x. 7 root root 4096 12月 15 23:39 .
drwxr-xr-x. 4 root root 4096 12月 15 23:14 ..
drwxr-xr-x. 2 root root 4096 12月 15 23:14 bin
drwxr-xr-x. 2 postgres postgres 4096 12月 15 23:39 data
drwxr-xr-x. 6 root root 4096 12月 15 23:14 include
drwxr-xr-x. 4 root root 4096 12月 15 23:14 lib
drwxr-xr-x. 6 root root 4096 12月 15 23:14 share
7. 配置環境變數
進入home/postgres目錄可以看到.bash_profile檔案。
[[email protected] postgresql]# cd /home/postgres
[[email protected] postgres]# ls -al
總用量 28
drwx------. 4 postgres postgres 4096 12月 15 23:37 .
drwxr-xr-x. 5 root root 4096 12月 15 23:19 ..
-rw-r--r--. 1 postgres postgres 18 5月 11 2012 .bash_logout
-rw-r--r--. 1 postgres postgres 178 12月 15 23:37 .bash_profile
-rw-r--r--. 1 postgres postgres 124 5月 11 2012 .bashrc
drwxr-xr-x. 2 postgres postgres 4096 11月 12 2010 .gnome2
drwxr-xr-x. 4 postgres postgres 4096 9月 29 05:12 .mozilla
[[email protected] postgres]#
編輯修改.bash_profile檔案。
[[email protected] postgres]# vi .bash_profile
新增以下內容。
export PGHOME=/pgsql/postgresql
export PGDATA=/pgsql/postgresql/data
PATH=$PATH:$HOME/bin:$PGHOME/bin
儲存,退出vi。執行以下命令,使環境變數生效
[[email protected] postgres]# source .bash_profile
8. 切換使用者到postgres並使用initdb初使用化資料庫
[[email protected] postgres]# su - postgres
[[email protected] ~]$ initdb
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale "zh_CN.UTF-8".
The default database encoding has accordingly been set to "UTF8".
initdb: could not find suitable text search configuration for locale "zh_CN.UTF-8"
The default text search configuration will be set to "simple".
Data page checksums are disabled.
fixing permissions on existing directory /pgsql/postgresql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:
pg_ctl -D /pgsql/postgresql/data -l logfile start
可以看到 /pgsql/postgresql/data已經有檔案了。
[[email protected] //]$ cd /pgsql/postgresql/data
[[email protected] data]$ ls
base pg_ident.conf pg_serial pg_tblspc postgresql.auto.conf
global pg_logical pg_snapshots pg_twophase postgresql.conf
pg_commit_ts pg_multixact pg_stat PG_VERSION
pg_dynshmem pg_notify pg_stat_tmp pg_wal
pg_hba.conf pg_replslot pg_subtrans pg_xact
9. 配置服務
修改/pgsql/postgresql/data目錄下的兩個檔案。
postgresql.conf 配置PostgreSQL資料庫伺服器的相應的引數。
pg_hba.conf 配置對資料庫的訪問許可權。
[[email protected] data]$ vi postgresql.conf
#listen_addresses = 'localhost' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
#port = 5432 # (change requires restart)
其中,引數“listen_addresses”表示監聽的IP地址,預設是在localhost處監聽,也就是127.0.0.1的ip地址上監聽,只接受來自本機localhost的連線請求,這會讓遠端的主機無法登陸這臺數據庫,如果想從其他的機器上登陸這臺數據庫,需要把監聽地址改為實際網路的地址,一種簡單的方法是,將行開頭的#去掉,把這個地址改為*,表示在本地的所有地址上監聽。
[[email protected] data]$ vi pg_hba.conf
找到最下面這一行 ,這樣區域網的人才能訪問。紅色為新新增內容。
# IPv4 local connections:
host all all 0.0.0.0/0 trust
host all all 127.0.0.1/32 trust
10. 設定PostgreSQL開機自啟動
PostgreSQL的開機自啟動指令碼位於PostgreSQL原始碼目錄的contrib/start-scripts路徑下。
linux檔案即為linux系統上的啟動指令碼
[[email protected] pgsql]$ cd /pgsql/postgresql-11.1/contrib/start-scripts
[[email protected] start-scripts]$ ls
freebsd linux macos
1)切換為root使用者,修改linux檔案屬性,新增X屬性
[[email protected] start-scripts]# chmod a+x linux
2) 複製linux檔案到/etc/init.d目錄下,更名為postgresql
[[email protected] start-scripts]# cp linux /etc/init.d/postgresql
3)修改/etc/init.d/postgresql檔案的兩個變數
prefix設定為postgresql的安裝路徑:/pgsql/postgresql
PGDATA設定為postgresql的資料目錄路徑:/pgsql/postgresql/data
4)設定postgresql服務開機自啟動
[[email protected] init.d]# chkconfig --add postgresql
檢視開機自啟動服務設定成功。
[[email protected] init.d]# chkconfig
postgresql 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉
5)編輯/etc/sysconfig/iptables檔案開放5432埠。
[[email protected] sysconfig]# cd /etc/sysconfig
[[email protected] sysconfig]# vi iptables
新增以下內容
-A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT
重啟服務
[[email protected] sysconfig]# /etc/init.d/iptables restart
iptables:清除防火牆規則: [確定]
iptables:將鏈設定為政策 ACCEPT:filter [確定]
iptables:正在解除安裝模組: [確定]
iptables:應用防火牆規則: [確定]
檢視埠是否開放
[[email protected] sysconfig]# /sbin/iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:5432
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
6)執行service postgresql start,啟動PostgreSQL服務
[[email protected] init.d]# service postgresql start
Starting PostgreSQL: ok
檢視PostgreSQL服務
[[email protected] init.d]# ps -ef | grep postgres
root 12040 3014 0 Dec15 pts/0 00:00:00 su - postgres
postgres 12041 12040 0 Dec15 pts/0 00:00:00 -bash
postgres 12177 1 0 00:29 ? 00:00:00 /pgsql/postgresql/bin/postmaster -D /pgsql/postgresql/data
postgres 12179 12177 0 00:29 ? 00:00:00 postgres: checkpointer
postgres 12180 12177 0 00:29 ? 00:00:00 postgres: background writer
postgres 12181 12177 0 00:29 ? 00:00:00 postgres: walwriter
postgres 12182 12177 0 00:29 ? 00:00:00 postgres: autovacuum launcher
postgres 12183 12177 0 00:29 ? 00:00:00 postgres: stats collector
postgres 12184 12177 0 00:29 ? 00:00:00 postgres: logical replication launcher
root 12198 12132 0 00:30 pts/0 00:00:00 grep postgres
現在就可以通過客戶端進行連線訪問資料庫啦!
https://www.cnblogs.com/sybblogs/p/5717392.html