共計 2936 個字符,預計需要花費 8 分鐘才能閱讀完成。
這篇文章主要介紹了 CentOS/RHEL 7 上 PostgreSQL 如何安裝配置,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。
安裝 PostgreSQL 9.6 為例:
安裝
Install the repository RPM
yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-redhat96-9.6-3.noarch.rpm
Install the client packages
yum install postgresql96
Install the server packages
yum install postgresql96-server
Initialize the database and enable automatic start
/usr/pgsql-9.6/bin/postgresql96-setup initdb
systemctl enable postgresql-9.6
systemctl start postgresql-9.6
配置
編輯 /var/lib/pgsql/9.6/data/postgresql.conf,修改 listen_addresses,監聽所有地址:
listen_addresses = *
編輯 /var/lib/pgsql/9.6/data/pg_hba.conf,修改認證方式:
# local is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 ident
host all all 0.0.0.0/0 md5
重啟 PostgreSQL
systemctl restart postgresql-9.6
認證方式
認證方式支持 trust , reject , md5 , password , gss , sspi , ident , peer , pam , ldap , radius , cert。
trust 任何人都可以訪問數據庫,需要指定數據庫用戶名。如上,本地可以使用 psql -U postgres 連接數據庫(當未指定數據庫用戶名時,默認為 root)。
password 密碼認證,發送明文密碼
md5 密碼認證,發送經 MD5 加密的密碼,假如數據庫服務器 IP 是 10.188.13.29,則可以這樣訪問:psql -h 10.188.13.29 -U postgres,回車后會提示輸入密碼。
ident 從 ident server 獲取客戶端操作系統的用戶名,當與數據庫用戶名匹配時則可訪問。當 ident 配置在 local 連接時,將使用 peer 替代。存在安全隱患,僅適用于封閉網絡,不建議使用。
peer 從 kernel 獲取客戶端操作系統的用戶名,當與數據庫用戶名匹配時則可訪問,僅用于 local 連接。如 local 配置為 peer 時,可以這樣訪問 psql -U postgres
當操作系統用戶名與數據庫用戶名不一致時可以在文件 pg_ident.conf 中配置 map 關系,如下:
# MAPNAME SYSTEM-USERNAME PG-USERNAME
omicron root postgres
然后在 pg_hba.conf 中配置使用 map:
local all all peer map=omicron
host all all 127.0.0.1/32 ident map=omicron
PSQL
連接 PostgreSQL
psql -U postgres
更多參數可以查看幫助 psql –help
刷新配置
修改配置文件后,可執行以下命令刷新配置:
select pg_reload_conf();
更改密碼
ALTER USER postgres WITH PASSWORD postgres
查看用戶
select * from pg_shadow;
查看 data 文件夾所在目錄
show data_directory;
創建用戶
CREATE USER test WITH PASSWORD test
ALTER USER test WITH SUPERUSER;
創建 SCHEMA
CREATE SCHEMA test;
ALTER SCHEMA test OWNER TO test;
查看 SCHEMA
\dn
設置 Search Path
SET search_path TO test;
查看 Table
\dt
查看 Sequence
\ds
查看 View
\dv
查看 Table Sequence View
\d
執行 sql 腳本
\i test.sql
Sequence
查詢 sequence(currval(), nextval())
select nextval(test_sequence
更新 sequence
alter sequence test_sequence restart with 42;
退出
\q
幫助
help
\? for help with psql commands
\h for help with SQL commands
備份與恢復
pg_dump -h host1 -U postgres [-n schema] dbname outfile
psql -U postgres dbname infile
也可直接備份 data 目錄
tar -cf backup.tar /usr/local/pgsql/data
存儲過程
清空所有表數據的一個小存儲過程(schema 名稱為 test):
-- FUNCTION: test.truncatealltable()
-- DROP FUNCTION test.truncatealltable();
CREATE OR REPLACE FUNCTION test.truncatealltable()
RETURNS text
LANGUAGE plpgsql
AS $BODY$
DECLARE
cur_all_tables CURSOR FOR
select relname from pg_class
where relnamespace = (select oid from pg_namespace where nspname = test)
and relkind = r order by relname;
truncate_sql CHARACTER VARYING(100);
BEGIN
FOR record IN cur_all_tables
LOOP
truncate_sql := concat( truncate table test. , record.relname, cascade
EXECUTE truncate_sql;
END LOOP;
return success
END
$BODY$;
感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“CentOS/RHEL 7 上 PostgreSQL 如何安裝配置”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!