Linux環境CentOS中源碼編譯安裝PostgreSQL
技術支持服務電話:15308000360 【7x24提供運維服務,解決各類系統/軟硬件疑難技術問題】
PostgreSQL版本: postgresql-9.6.2.tar.gz
數據存放目錄: /datafile/pgdata
軟件安裝位置: /usr/local/postgresql
安裝步驟及腳本:
安裝依賴環境
yum install -y gcc-c++ libxml2 libxml2-devel zlib zlib-devel libxslt libxslt-devel openssl openssl-devel systemtap-sdt-devel.x86_64 perl-ExtUtils-Embed readline readline-devel pam pam-devel tcl tcl-devel openldap openldap-devel python python-devel創建用戶和組
groupadd postgres useradd -g postgres postgres解壓
tar zxvf postgresql-9.6.2.tar.gz cd postgresql-9.6.2配置
./configure --prefix=/usr/local/postgresql --with-pgport=5432 --with-perl --with-python --with-tcl --with-openssl --with-pam --without-ldap --with-libxml --with-libxslt --enable-thread-safety --with-wal-blocksize=16 --with-blocksize=16 --enable-dtrace --enable-debug編譯安裝
make && make install安裝contrib目錄下的一些工具,是第三方組織的一些工具代碼,建議安裝 打開 postgresql-9.6.2/contrib
make && make install創建postgres數據庫的目錄
mkdir -p /datafile/pgdata chown postgres:postgres /datafile/pgdata/* chown postgres:postgres /usr/local/postgresql/* chmod -R 775 /datafile/pgdata/*切換用戶
su postgres添加環境變量,并使之生效(初級用戶請自行學習設置)
vi ./.bash_profile添加以下內容:
# add PG env export PGHOME=/usr/local/postgresql export PGDATA=/datafile/pgdata export PATH=$PGHOME/bin:$PATH export MANPATH=$PGHOME/share/man:$MANPATH export LANG=en_US.utf8 export DATE=`date +"%Y-%m-%d %H:%M:%S"` export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH alias rm='rm -i' alias ll='ls -lh' #alias pg_start='pg_ctl start -D $PGDATA' #alias pg_stop='pg_ctl stop -D $PGDATA -m fast' #psql -h 主機名 -p 端口號 -U 用戶名 -W(強制口令提示) [-d]數據庫名 #psql -h $GHOST -p $PGPORT -U $PGUSER -W -d $PGDATABASE #PGHOST 設置數據庫服務器名。 如果它以一個斜杠開頭,那么它聲明一個 Unix 域套接字而不是 TCP/IP 通訊; 其值就是該套接字文件存儲的目錄(在缺省安裝中,這個目錄會是 /tmp) #export PGHOST=$PGDATA export PGHOST=localhost #PGPORT 設置 TCP 端口號或者設置與 PostgreSQL 通訊的 Unix 域套接字的文件擴展。 export PGPORT=5432 export PGUSER=postgres #用于與數據庫連接的用戶名,initdb -U posgtres指定 #export PGDATABASE=demo#數據庫名修改環境變量后,可以重新登錄該用戶或者source .bash_profile讓環境變量生效。 測試一下:
[postgres@localhost ~]$ source .bash_profile [postgres@localhost ~]$ psql -V psql (PostgreSQL) 9.6.2初始化數據庫
initdb -D $PGDATA -E UTF8 --locale=C -U postgres -W #或則 initdb -D /datafile/pgdata看到如下提示信息,表示初始化成功,下一步可以啟動數據庫了。
Success. You can now start the database server using: postgres -D /db/pgdata or pg_ctl -D /db/pgdata -l logfile start啟動服務
pg_ctl start -D $PGDATA -l pgsql.log #或則 pg_ctl -D /datafile/pgdata -l /datafile/pgdata/logfile start查看數據庫狀態:
[postgres@localhost ~]$ pg_ctl status關閉數據庫
[postgres@localhost ~]$ pg_ctl stop -D $PGDATA登錄數據庫: 使用"psql 數據庫名"登錄數據庫。缺省數據庫名時,連接到默認的數據庫postgres。
[postgres@localhost ~]$ psql使用PostgreSQL數據庫命令行交互工具psql登錄數據庫后,可以執行SQL命令或者psql提供的元命令。使用\?可以查看psql的所有元命令和功能說明。
登錄數據庫后,命令行提示符為"數據庫名=#",如:"postgres=#"。
登錄后,psql常用的元命令:
\?, 查看psql所有可以使用的元命令和說明信息;
\l,列出所有的數據庫信息;
\c demodb, 連接到demodb數據庫;
\c[onnect] [數據庫名稱|- 用戶名稱|- 主機|- 端口|-], 連接到新的數據庫;
\d, 列出表,視圖和序列;
\d 名稱, 描述表,視圖,序列,或索引;
\db [模式], 列出表空間
\di [模式], 列出所有索引;
\dt [模式], 列出所有表;
\dT [模式], 列出數據類型
\h, 列出所有的SQL命令;
\h select, 列出select語句的語法;
\i file, 執行來自file的命令;
\q, 退出psql;
select * from pg_stat_activity; 顯示當前活動任務列表.
創建測試數據庫
create database testone;切換到testone 數據庫
\c testone創建測試表
create table testone (id integer, name text);插入測試數據
insert into testone values (1,'testone');選擇數據
select * from testone ;刪除數據庫
[postgres@localhost ~]$ dropdb test;修改linux 系統用戶postgres 的密碼
passwd postgresPostgresSQL 數據庫配置實現遠程訪問,修改 postgresql.conf 文件
vi /datafile/pgdata/postgresql.conf設置允許遠程連接,修改客戶端認證配置文件pg_hba.conf,將需要遠程訪問數據庫的IP地址或地址段加入該文件
vi /datafile/pgdata/pg_hba.conf找到
host all all 127.0.0.1/32 trust把上面的信息改成以下內容
host all all 0.0.0.0/0 trust#設置監聽整個網絡,查找“ listen_addresses ”字符串
vi /datafile/pgdata/postgresql.conf修改為如下:
listen_addresses = '*'重啟服務
pg_ctl -D /datafile/pgdata -l /datafile/pgdata/logfile restart停止服務
pg_ctl -D /datafile/pgdata -l /datafile/pgdata/logfile stop查看端口是否啟用
netstat -anp | grep 5432