createdb
createdb — 创建一个新的 Postgres 数据库
大纲
createdb [dbname] createdb [ -hhost] [ -pport] [ -Ddatadir] [ -u ] [dbname]
输入
- -h
host 指定 postmaster 所在机器的主机名。默认使用本地 Unix 域套接字而不是 IP 连接。
- -p
port 指定 postmaster 正在监听连接的 Internet TCP/IP 端口或本地 Unix 域套接字文件扩展名。端口号默认为 5432,或
PGPORT环境变量的值(如果设置了的话)。- -u
使用口令认证。提示输入
username和password。- -D
datadir 指定本次数据库安装的备选数据库位置。这是安装系统表的位置,而不是这个具体数据库的位置,后者可能不同。
dbname指定要创建的数据库的名称。该名称在本安装中的所有 Postgres 数据库中必须唯一。
dbname默认为USER环境变量的值。
输出
createdb 将为新数据库在
数据区中创建文件。
PGDATA/dbname/
- Connection to database 'template1' failed.
connectDB() failed: Is the postmaster running and accepting connections
at 'UNIX Socket' on port '
port'? createdb: database creation failed ondbname. createdb 无法连接到指定主机和端口上的 postmaster 进程。如果看到这条消息,请确保 postmaster 在正确的主机上运行,并且你指定了正确的端口。如果你的站点使用认证系统,请确保你已获得所需的认证凭据。
- Connection to database 'template1' failed.
FATAL 1: SetUserId: user '
username' is not in 'pg_shadow' createdb: database creation failed ondbname. 你在关系
pg_shadow中没有有效的条目,将不被允许访问 Postgres。请联系你的 Postgres 管理员。- ERROR: user '
username' is not allowed to create/destroy databases createdb: database creation failed ondbname. 你没有创建新数据库的权限。请联系你的 Postgres 站点管理员。
- ERROR: createdb: database '
dbname' already exists. createdb: database creation failed ondbname. 数据库已存在。
- createdb: database creation failed on
dbname. psql 或后端服务器发生了内部错误。请确保你的站点管理员已正确安装 Postgres 并用 initdb 初始化了站点。
注意
createdb 在内部从 psql 运行
CREATE DATABASE,同时连接到
template1 数据库。
描述
createdb 创建一个新的 Postgres 数据库。执行这个命令的人成为该数据库的数据库管理员(DBA),并且是 Postgres 超级用户之外唯一可以销毁它的人。
createdb 是一个调用
psql 的 shell 脚本。因此,在执行
createdb
之前,数据库服务器主机上必须有一个
postmaster
进程在运行。PGOPTION
和
PGREALM
环境变量将被传递给
psql
并按psql中的描述处理。
用法
要用本地主机 5432 端口上的
postmaster 创建数据库 demo:
createdb demo
要用主机 eden 上 5000 端口上的
postmaster 创建数据库 demo:
createdb -p 5000 -h eden demo