PostgreSQL是一个功能强大的开源对象关系型数据库系统,他使用和扩展了SQL语言,并结合了许多安全存储和扩展最复杂数据工作负载的功能。PostgreSQL的起源可以追溯到1986年,作为加州大学伯克利分校POSTGRES项目的一部分,并且在核心平台上进行了30多年的积极开发。
PostgresSQL凭借其经过验证的架构,可靠性,数据完整性,强大的功能集,可扩展性以及软件背后的开源社区的奉献精神赢得了良好的声誉,以始终如一地提供高性能和创新的解决方案。PostgreSQL在所有主要操作系统开始使用PostgreSQL从未如此简单。
template1和template0是pgsql的模板数据库。所谓模板数据库就是创建新database时,PostgreSQL会基于模板数据库制作一份副本,其中会包含所有的数据库设置和数据文件。PostgreSQL安装好以后会默认附带两个模板数据库:template0和template1。
我们知道创建数据库时的语法为:
CREATE DATABASE name
[ [ WITH ] [ OWNER [=] user_name ]
[ TEMPLATE [=] template ]
[ ENCODING [=] encoding ]
[ LC_COLLATE [=] lc_collate ]
[ LC_CTYPE [=] lc_ctype ]
[ TABLESPACE [=] tablespace_name ]
[ ALLOW_CONNECTIONS [=] allowconn ]
[ CONNECTION LIMIT [=] connlimit ] ]
[ IS_TEMPLATE [=] istemplate ]
如:create database aaaa with template='template0' encoding ='UTF8' lc_collate='C' lc_ctype='en_US.utf8' owner='test123';
其中template表示模板数据库。建库时如果不指定 TEMPLATE 属性,默认用的是 template1 模板库。
使用\l 命令查看template0和template1的encoding和locale
注:template0和template1都不能被删除。
方法是指定is_template
create database tmpdb with template template0 lc_collate 'zh_CN.UTF8' lc_ctype 'zh_CN.UTF8' is_template=true;
解决需要先把模板库改成普通库再删除。
alter database tmpdb is_template false;
drop database tmpdb;
pg_dump -h 192.168.30.1 -p 5432 -U admin articledb > articledb.sql
psql -U uatpguser -h 192.168.30.2 -p 5432 template1
CREATE DATABASE "articledb";
CREATE USER admin WITH PASSWORD 'hrkx0&3iZ1#RG^bO';
CREATE USER readonly WITH PASSWORD 'cGpCP75Nu7^q1Ziw';
GRANT ALL PRIVILEGES ON DATABASE "articledb" TO admin;
GRANT ALL PRIVILEGES ON all tables in schema public TO admin;
## 分配只读权限
GRANT SELECT ON all tables TOreadonly;
psql -U admin -h 192.168.30.2 -d articledb -p 5432 -f articledb.sql
psql -h 192.168.30.2 -p 5432 -U admin -W articledb
select pg_size_pretty(pg_database_size('admin'));
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。