15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > openGauss数据库模板:template0和template1

openGauss数据库模板:template0和template1

时间:2023-06-09 23:15:01 | 来源:网站运营

时间:2023-06-09 23:15:01 来源:网站运营

openGauss数据库模板:template0和template1:

openGauss数据库模板:template0和template1

    初始化之后, 就有了template0, template1模板库,开始时这两个库的内容是一样的,但这两个库有什么区别?
• template1可以连接并创建对象,template0 不可以连接;
• 正因为template1可以创建对像,相比template0被称为非干净数据库,而template0被称为干净的数据库;
• 使用template1 模板库建库时不可指定新的 encoding 和 locale,而 template0 可以;
• Template0、Template1 库默认都不可删除,且建库时template参数只能指定template0。
  和PGSQL有所区别:PGSQL默认使用template1,手动可以指定template0,并且PGSQL可以使用模板进行数据库克隆。

  本文档通过间接修改的方式,分别在template0数据库中创建表t0,在template1数据库中创建表t1。以此区别这两个模板数据库内的数据,验证新建数据库到底使用哪个模板数据库。
最终测试结果显示:无论是默认建库,还是指定template建库,均只能使用template0模板。

postgres=# /l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges-----------+-------+-----------+---------+-------+------------------- postgres | omm | SQL_ASCII | C | C | =Tc/omm + | | | | | omm=CTc/omm template0 | omm | SQL_ASCII | C | C | template1 | omm | SQL_ASCII | C | C |

1. 修改template1(新建表t1) [普通用户没有权限登录]

postgres=# /c template1Non-SSL connection (SSL connection is recommended when requiring high-security)You are now connected to database "template1" as user "omm".template1=# create table t1(id int,name varchar(20));CREATE TABLEtemplate1=# insert into t1 values(1,'Jerry');INSERT 0 1template1=# select * from t1; id | name----+------- 1 | Jerrytemplate1=# select schemaname,relname from pg_stat_user_tables; schemaname | relname------------+--------- public | t1

2. 重建 template0 (新建表t0)

2.1 备份template0为temp0,并创建表t0

template1=# create database temp0 template=template0; ## 备份template0CREATE DATABASEtemplate1=# select datname from pg_database; datname----------- template0 postgres template1 temp0 template1=# /c temp0Non-SSL connection (SSL connection is recommended when requiring high-security)You are now connected to database "temp0" as user "omm".temp0=# create table t0(id int,name varchar(20));CREATE TABLEtemp0=# insert into t0 values(0,'Tom');INSERT 0 1temp0=# select * from t0; id | name----+------ 0 | Tom(1 row)temp0=# select schemaname,relname from pg_stat_user_tables; schemaname | relname------------+--------- public | t0(1 row)

2.2 删除 template0

temp0=# update pg_database set datistemplate=false where datname='template0';UPDATE 1temp0=# drop database template0;DROP DATABASEtemp0=# select datname from pg_database; datname----------- postgres template1 temp0(3 rows)

2.3 重命名数据库为template0,并标识为模板数据库

temp0=# /c postgresNon-SSL connection (SSL connection is recommended when requiring high-security)You are now connected to database "postgres" as user "omm".postgres=# alter database temp0 rename to template0;ALTER DATABASEpostgres=# update pg_database set datistemplate=true where datname='template0';UPDATE 1postgres=# select datname from pg_database; datname----------- postgres template1 template0(3 rows)

3. 创建数据库测试验证模板的使用

3.1 默认创建数据库(结果显示:默认使用template0模板)

postgres=# create database mydb;CREATE DATABASEpostgres=# /c mydbNon-SSL connection (SSL connection is recommended when requiring high-security)You are now connected to database "mydb" as user "omm".mydb=# select schemaname,relname from pg_stat_user_tables; schemaname | relname------------+--------- public | t0(1 row)mydb=# select * from t0; id | name----+------ 0 | Tom(1 row)

3.2 创建数据库并指定字符集(结果显示:默认使用template0模板)

postgres=# create database mydb3 with encoding='UTF-8';CREATE DATABASEpostgres=# /c mydb3Non-SSL connection (SSL connection is recommended when requiring high-security)You are now connected to database "mydb3" as user "omm".mydb3=# select schemaname,relname from pg_stat_user_tables; schemaname | relname------------+--------- public | t0(1 row)

3.3 使用template0创建数据库(结果显示:默认使用template0模板)

postgres=# create database mydb1 with template=template0;CREATE DATABASEmydb=# /c mydb1Non-SSL connection (SSL connection is recommended when requiring high-security)You are now connected to database "mydb1" as user "omm".mydb1=# select schemaname,relname from pg_stat_user_tables; schemaname | relname------------+--------- public | t0(1 row)mydb1=# select * from t0; id | name----+------ 0 | Tom(1 row)

3.4 使用template1创建数据库(不允许手动指定使用template1模板)

postgres=# create database mydb2 with template=template1;ERROR: template1 is not supported for using here, just support template0

4. 重建template1示例

mydb4=# update pg_database set datistemplate = false where datname='template1';UPDATE 1mydb4=# drop database template1;DROP DATABASEmydb4=# create database template1 template=template0;CREATE DATABASEmydb4=# update pg_database set datistemplate = true where datname='template1';UPDATE 1mydb4=# /l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges-----------+-------+-----------+---------+-------+------------------- postgres | omm | SQL_ASCII | C | C | =Tc/omm + | | | | | omm=CTc/omm template0 | omm | SQL_ASCII | C | C | =c/omm + | | | | | omm=CTc/omm template1 | omm | SQL_ASCII | C | C |

关键词:模板,数据

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭