Postgresql 如何确定默认情况下创建了哪些数据库、模式和表?
我想知道默认情况下创建了哪些数据库、模式和表。我想知道怎么做 我使用Postgresql 如何确定默认情况下创建了哪些数据库、模式和表?,postgresql,Postgresql,我想知道默认情况下创建了哪些数据库、模式和表。我想知道怎么做 我使用\l,但无法从其输出中分辨出来。谢谢 $ sudo -u postgres psql postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges --------------+
\l
,但无法从其输出中分辨出来。谢谢
$ sudo -u postgres psql
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
--------------+----------+----------+-------------+-------------+-----------------------
linuxhowtodb | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
students | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(5 rows)
数据库
template0
、template1
和postgres
默认在initdb
时创建
数据库
postgres
用于管理连接,template1
将在您创建新数据库时用作默认模板,而template0
是您需要真正空数据库时使用的模板。数据库template0
,initdb
时,默认情况下会创建template1
和postgres
数据库
postgres
用于管理连接,template1
将在创建新数据库而不指定显式模板时用作默认模板,而template0
是您在需要一个真正空的数据库时所使用的模板。我将对“我如何判断”这个问题给出一个非常一般的答案:您不能
“默认创建”可能意味着各种事情,但通常它只是指“由安装程序初始化”;系统通常没有理由跟踪哪些东西是由安装程序创建的,哪些是由用户创建的
用户甚至可以更改或删除安装程序创建的内容,无论是否影响系统的正常运行
就PostgreSQL而言,安装程序确实创建了许多对象。为了系统的安全运行,其中一些必须继续存在-您可以删除“内置”运算符和函数的定义,但如果删除,可能会留下一个有点损坏的系统。其他的对用户很有用-按照惯例,postgres
数据库是完全空的,并且在连接执行服务器维护命令时由工具使用
找到默认情况下创建的所有内容的唯一可靠方法是干净地安装最新版本的软件,并在添加任何您自己的数据之前立即查看其中包含的内容。要想知道这些都是为了什么,最好的办法就是通读手册。这适用于PostgreSQL,但也适用于几乎所有其他软件。我将对“我怎么能说”这个问题给出一个非常笼统的回答:你不能 “默认创建”可能意味着各种事情,但通常它只是指“由安装程序初始化”;系统通常没有理由跟踪哪些东西是由安装程序创建的,哪些是由用户创建的 用户甚至可以更改或删除安装程序创建的内容,无论是否影响系统的正常运行 就PostgreSQL而言,安装程序确实创建了许多对象。为了系统的安全运行,其中一些必须继续存在-您可以删除“内置”运算符和函数的定义,但如果删除,可能会留下一个有点损坏的系统。其他的对用户很有用-按照惯例,
postgres
数据库是完全空的,并且在连接执行服务器维护命令时由工具使用
找到默认情况下创建的所有内容的唯一可靠方法是干净地安装最新版本的软件,并在添加任何您自己的数据之前立即查看其中包含的内容。要想知道这些都是为了什么,最好的办法就是通读手册。这适用于PostgreSQL,但也适用于几乎所有其他软件。对于SO来说,这感觉太具体了——这不一定是个问题,但投票给DBA。对于SO来说,这感觉太具体了——这不一定是个问题,但投票给DBA。