PostgreSQL on Linux安裝部署及基本使用
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
◆◆◆◆◆◆◆◆PostgreSQL安裝部署◆◆◆◆◆◆◆◆
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
前言:項目中使用到了PostgreSQL,目前只涉及安裝部署,及基本使用,通過幾天的學習,對PG有個初步了解,做此整理。
環境:PostgreSQL 9.6+Redhat 6.3
一、安裝數據庫
1、刪除系統中舊版本PostgreSQL
(1)查看現有版本:
rpm -qa | grep postgres
(2)檢查pg服務,停服務
查看服務:service postgresql-9.4 status
停:service postgresql-9.4 stop
查看進程:ps -ef | grep postgres
停:kill -9 12345
(3)刪除現有版本
rpm --nodeps -e postgresql94-libs-9.4.10-1PGDG.rhel6.x86_64
rpm --nodeps -e postgresql94-server-9.4.10-1PGDG.rhel6.x86_64
rpm --nodeps -e postgresql94-contrib-9.4.10-1PGDG.rhel6.x86_64
rpm --nodeps -e postgresql94-9.4.10-1PGDG.rhel6.x86_64
2、下載新版本
https://yum.postgresql.org/9.6/redhat/ 本地址為redhat平臺9.6版本下載鏈接,如需下載其他版本,將9.6改為其它版本即可。如9.3:https://yum.postgresql.org/9.3 然后選擇平臺
(1)基礎安裝,需要下載四個介質:
postgresql96-libs-9.6.2-2PGDG.rhel6.x86_64.rpm
postgresql96-server-9.6.2-2PGDG.rhel6.x86_64.rpm
postgresql96-9.6.2-2PGDG.rhel6.x86_64.rpm
(2)擴展安裝,兩個介質:
postgresql96-contrib-9.6.2-2PGDG.rhel6.x86_64.rpm
postgresql96-devel-9.6.2-2PGDG.rhel6.x86_64.rpm
3、安裝PostgreSQL
(1)基礎包按照如下順序安裝:
rpm -ivh postgresql96-libs-9.6.2-2PGDG.rhel6.x86_64.rpm
rpm -ivh postgresql96-9.6.2-2PGDG.rhel6.x86_64.rpm
rpm -ivh postgresql96-server-9.6.2-2PGDG.rhel6.x86_64.rpm
(2)擴展:
rpm -ivh postgresql96-contrib-9.6.2-2PGDG.rhel6.x86_64.rpm
rpm -ivh postgresql96-devel-9.6.2-2PGDG.rhel6.x86_64.rpm
注:安裝server可能缺少系統依賴包openssl,或需要升級如本次安裝server時報錯:libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit) is needed by postgresql96-server-9.6.2-2PGDG.rhel6.x86_64
刪除舊版本openssl:
rpm -qa opensssl
rpm --nodeps -e openssl
下載openssl-1.0.1e-48.el6.x86_64.rpm安裝后,即可繼續安裝server。
根據提示的具體版本下載安裝即可。
4、將初始化數據指定到自定義路徑
PostgreSQL默認將數據文件等配置文件初始化到/var/lib/pgsql/9.6/data,實際應用中,我們希望將其放置到自定義的路徑下(單獨掛載的文件系統),這就需要初始化數據前,將路徑指定到自定義路徑
修改postgres用戶.bash_profile中$PGDATA變量到自定義路徑。
注意:這個自定義路徑要有postgres:postgres權限,注意賦權。
5、初始化數據庫(初始化過程會建Postgres主庫,無主庫則PostgreSQL無法啟動)
service postgresql-9.6 initdb
6、啟動數據庫
service postgresql-9.6 start
二、使用數據庫
0、簡介postgreSQL數據庫結構,以便有清晰的管理思路。
(1)postgreSQL對象層次:
服務器、數據庫、模式、表或其他類型對象。而用戶與schema清晰分離開了。創建user與創建schema完全不相關。創建user后,賦予其指定數據庫/schema的權限,即可訪問對應db和shema。
而創建schma是在某個db下進行,創建后,可在schema下創建表等對象,用戶對其有對應權限才可以對其做對應操作。
安裝postgresql后,啟動PostgreSQL服務,進入默認的postgres用戶。
1、使用postgres用戶(超級用戶,類似oracle的sysdba)登錄數據庫:
#su - postgres ####postgres系統用戶即為默認的postgreSQL操作用戶,類似oracle的oracle用戶。
$psql ####進入postgres用戶后執行psql即可登錄到pg中,這樣默認是登錄到:postgres用戶 postgres庫;類似oracle的sqlplus / as sysdba
注意:安裝后,psql可執行程序在/usr/pgsql-9.6/bin/psql,如果postgres用戶下不能執行psql,進行如下配置:
(1)查看postgres用戶的psql對應環境變量:
whereis psql
返回:psql: /usr/sbin/psql /usr/share/man/man1/psql.1
(2)將該路徑軟鏈接到剛安裝的psql實際存在的路徑/usr/pgsql-9.6/bin/psql
ln -s /usr/pgsql-9.6/bin/psql /usr/sbin/psql
2、創建db,user,并將所建db指定給指定user管理,賦權
CREATE USER postgr WITH PASSWORD 'postgr';
CREATE DATABASE dsgdb OWNER postgr;
GRANT ALL PRIVILEGES ON DATABASE dsgdb to postgr;
3、基本操作
對數據庫結構、表結構等的操作可以登陸數據庫后使用\?命令列出。下邊列出最基本的常用命令:
\l #列出當前PostgreSQL中有哪些數據庫,擁有者、字符集、權限等;
\dn #列出當前庫中所有schema;
\d #列出當前數據庫中的表、視圖、序列;
\d tablename #查看指定表的表結構;
select current_database(); #查看當前登陸的數據庫;
select * from current_user; #查看當前登陸的用戶;
\c dbname username #切換登陸的數據庫、用戶;
3、使用指定用戶登錄指定庫:
#su - postgres
$psql -d dsgdb -U postgr #psql后邊-d參數指定db,-U參數指定登陸用戶,其他參數可psql --help查看
set search_path to dsg_test; #設置模式搜索路徑為某個schema;默認是public;
set search_path to public; #模式搜索路徑切換回默認的public;