CentOS/RHEL 7上PostgreSQL如何安装配置
admin
2023-05-21 11:42:59
0

安装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$;

相关内容

热门资讯

国民党青年:特朗普最新表态对台... 中国国民党前青年部主任陈冠安接受香港中评社访问表示,特朗普访华虽然没有直接讲出反对“台独”四个字,但...
美媒曝美军对伊特战计划:自带挖... 美媒日前称,五角大楼正在为恢复对伊朗的军事行动做准备,美国和以色列最早可能在本周重启对伊朗的军事打击...
通话老人手表厂家推荐指南:下沉... 导语:随着智能穿戴设备在健康监测领域的渗透率持续提升,下沉市场对适老化健康智能手表的需求呈现爆发式增...
广西皮卡车过桥坠河,已致5死5... 记者从广西环江“5·16”过桥车辆坠河事件现场搜救队伍了解到,18日17时左右,搜救队伍在车辆坠河地...
缅甸提出打击电诈新法草案,最高... 据凤凰卫视报道,缅甸政府近日公布打击跨境网络诈骗的新法律草案,对经营诈骗园区与相关犯罪行为祭出重刑,...
红夹克、机舱合影,李显龙晒访华... 5月18日,新加坡国务资政李显龙在社交平台发文,他已抵达广西南宁,开启本周访华行程,并晒出机舱照、与...
“赌王”女儿何超蕸,真正死因公... 5月17日,已故“赌王”何鸿燊女儿何超蕸的追思会,在香港举行。此次追思会由何超琼亲自操办,一早她便到...
宇通4款高端车型亮相米兰交通运... 近日,2026米兰交通运输展览会(NME)在意大利米兰国际展览中心拉开帷幕。在这场汇聚全球目光的行业...
伊朗已逮捕6500多名间谍及通... 据伊朗迈赫尔通讯社18日报道,伊朗治安部队司令艾哈迈德-礼萨·拉丹说,自2月底美国和以色列对伊朗发动...
男子与13岁智力缺陷少女发生性... 澎湃新闻记者 刘璐男子与13岁智力缺陷少女发生性关系,犯强奸罪被判刑。5月18日,最高检联合中国残联...