標籤:用戶端 postgresql createdb
建立一個新的PostgreSQL資料庫。該命令的使用方式如下:
createdb [option...] [dbname] [description]
1. 命令列選項列表:
選項 |
說明 |
-D(--tablespace=tablespace) |
指定資料庫的預設資料表空間。 |
-e(--echo) |
回顯createdb產生的命令並且把它發送到伺服器。 |
-E(--encoding=encoding) |
指定用於此資料庫的字元編碼方式。 |
-l(--locale=locale) |
指定用於此資料庫的本地化設定。 |
-O(--owner=owner) |
指定建立資料庫的擁有者,如果未指定此選項,該值為當前登入的使用者。 |
-T(--template=template) |
指定建立此資料庫的模板資料庫。 |
-h(--host=host) |
指定PostgreSQL伺服器的主機名稱。 |
-p(--port=port) |
指定伺服器的偵聽連接埠,如不指定,則為預設的5432。 |
-U(--username=username) |
本次操作的登入使用者名稱,如果-O選項沒有指定,此資料庫的Owner將為該登入使用者。 |
-w(--no-password) |
如果當前登入使用者沒有密碼,可以指定該選項直接登入。 |
2.應用樣本:
#1.以postgres的身份登入。
登陸預設的postgres資料庫(三種登陸方式)
[[email protected] PG_9.5_201510051]$ psql -p 36985
psql.bin (9.5.9)
Type "help" for help.
postgres=#
[[email protected] PG_9.5_201510051]$ psql -U postgres -p 36985
psql.bin (9.5.9)
Type "help" for help.
postgres=#
[[email protected] PG_9.5_201510051]$ psql -U postgres -d postgres -p 36985
psql.bin (9.5.9)
Type "help" for help.
postgres=# \q
#2. 建立資料表空間。
postgres=# CREATE TABLESPACE tbspace01 LOCATION ‘/data/postgresql/tbspace‘;
CREATE TABLESPACE
[[email protected] tbspace]$ cd /data/postgresql/tbspace
[[email protected] tbspace]$ ls
PG_9.5_201510051
3. 建立新資料庫的owner。
postgres=# CREATE ROLE testwjw LOGIN PASSWORD ‘123456‘;
CREATE ROLE
postgres=# \q
#4. 建立新資料庫,其中本次串連的登入使用者為testwjw,新資料庫的owner為testwjw,新資料庫名為cstest01。
[[email protected] ~]$ createdb -U testwjw -p36985 -O testwjw -e cstest01
CREATE DATABASE cstest01 OWNER testwjw TABLESPACE db_space01;
createdb: database creation failed: ERROR: permission denied to create database
原因是使用者testwjw沒有建立庫的許可權:
postgres=# alter user testwjw createdb;
ALTER ROLE
postgres=# \du List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
myuser | | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
testwjw | Create DB
5.重新登入,通過查詢系統資料表查看該資料庫是否建立成功,以及資料表空間和所有者是否一致。
postgres=# SELECT datname,rolname,spcname FROM pg_database db, pg_authid au, pg_tablespace ts WHERE datname = ‘cstest01‘ AND datdba = au.oid AND dattablespace = ts.oid;
datname | rolname | spcname
----------+---------+------------
cstest01 | testwjw | pg_default
(1 row)
本文出自 “10931853” 部落格,請務必保留此出處http://wujianwei.blog.51cto.com/10931853/1970757
postgresql用戶端命令之createdb