亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > PostgreSQL > 正文

PostgreSQL教程(十七):客戶端命令(1)

2020-03-12 23:52:54
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PostgreSQL教程(十七):客戶端命令(1),本文講解了createdb、dropdb、reindexdb、vacuumdb、createuser、dropuser等命令,需要的朋友可以參考下
 

零、口令文件:

    在給出其它PostgreSQL客戶端命令之前,我們需要先介紹一下PostgreSQL中的口令文件。之所以在這里提前說明該文件,是因為我們在后面的示例代碼中會大量應用該文件,從而保證我們的腳本能夠自動化完成。換句話說,如果在客戶端命令執行時沒有提供該文件,PostgreSQL的所有客戶端命令均會被口令輸入提示中斷。
    在當前用戶的HOME目錄下,我們需要手工創建文件名為 .pgpass的口令文件,這樣就可以在我們連接PostgreSQL服務器時,客戶端命令自動讀取該文件已獲得登錄時所需要的口令信息。該文件的格式如下:
 

復制代碼代碼如下:

    hostname:port:database:username:password
 

    以上數據是用冒號作為分隔符,總共分為五個字段,分別表示服務器主機名(IP)、服務器監聽的端口號、登錄訪問的數據庫名、登錄用戶名和密碼,其中前四個字段都可以使用星號(*)來表示匹配任意值。見如下示例:
 
復制代碼代碼如下:

    /> cat > .pgpass
    *:5432:postgres:postgres:123456
    CTRL+D
    #.pgpass文件的權限必須為0600,從而防止任何全局或者同組的用戶訪問,否則這個文件將被忽略。
    /> chmod 0600 .pgpass
 

    在學習后面的客戶端命令之前,我們需要根據自己的應用環境手工創建該文件,以便后面所有的示例代碼都會用到該口令文件,這樣它們就都可以以批處理的方式自動完成。

 

一、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的身份登錄。(詳情參照上面口令文件的內容)    
    /> psql
    #2. 創建表空間。
    postgres=# CREATE TABLESPACE my_tablespace LOCATION '/opt/PostgreSQL/9.1/mydata';
    CREATE TABLESPACE
    #3. 創建新數據庫的owner。
    postgres=# CREATE ROLE myuser LOGIN PASSWORD '123456';
    CREATE ROLE
    postgres=# /q
    #4. 創建新數據庫,其中本次連接的登錄用戶為postgres,新數據庫的owner為myuser,表空間為my_tablespace,新數據庫名為mydatabase。
    /> createdb -U postgres -O myuser -D my_tablespace -e mydatabase
    CREATE DATABASE mydatabase OWNER myuser TABLESPACE my_tablespace;
    #5. 重新登錄,通過查詢系統表查看該數據庫是否創建成功,以及表空間和所有者是否一致。
    /> psql
    postgres=# SELECT datname,rolname,spcname FROM pg_database db, pg_authid au, pg_tablespace ts WHERE datname = 'mydatabase' AND datdba = au.oid AND dattablespace = ts.oid;
      datname   | rolname |    spcname
    ------------+---------+---------------
     mydatabase | myuser  | my_tablespace
    (1 row)

二、dropdb:

 

    刪除一個現有PostgreSQL數據庫。
 

復制代碼代碼如下:

    dropdb [option...] dbname
 

    1. 命令行選項列表:

 

 

選項 說明
-e(--echo) 回顯dropdb生成的命令并且把它發送到服務器。
-i(--interactive) 在做任何破壞性動作前提示。
-q(--quiet) 不顯示響應。
-h(--host=host) 指定PostgreSQL服務器的主機名。
-p(--port=port) 指定服務器的監聽端口,如不指定,則為缺省的5432。
-U(--username=username) 本次操作的登錄用戶名。
-w(--no-password) 如果當前登錄用戶沒有密碼,可以指定該選項直接登錄。

 

2. 應用示例:

復制代碼代碼如下:

    #以postgres的身份連接服務器,刪除mydatabase數據庫。
    /> dropdb -U postgres -e mydatabase
    DROP DATABASE mydatabase;
    #通過查看系統表驗證該數據庫是否已經被刪除。
    /> psql
    postgres=# SELECT count(*) FROM pg_database WHERE datname = 'mydatabase';
     count
    -------
         0
    (1 row)

 

三、reindexdb:

    為一個指定的PostgreSQL數據庫重建索引。
 

復制代碼代碼如下:

    reindexdb [connection-option...] [--table | -t table ] [--index | -i index ] [dbname]
    reindexdb [connection-option...] [--all | -a]
    reindexdb [connection-option...] [--system | -s] [dbname]
 

    1. 命令行選項列表:

 

 

選項 說明
-a(-all) 重建整個數據庫的索引。
-e(--echo) 回顯reindexdb生成的命令并且把它發送到服務器。
-i(--index=index) 僅重建指定的索引。
-q(--quiet) 不顯示響應。
-s(--system) 重建數據庫系統表的索引。
-t(--table=table) 僅重建指定數據表的索引。
-h(--host=host) 指定PostgreSQL服務器的主機名。
-p(--port=port) 指定服務器的監聽端口,如不指定,則為缺省的5432。
-U(--username=username) 本次操作的登錄用戶名。
-w(--no-password) 如果當前登錄用戶沒有密碼,可以指定該選項直接登錄。

 

 2. 應用示例:  
 

復制代碼代碼如下:

    #僅重建數據表testtable上的全部索引。
    /> reindexdb -t testtable -e -U postgres postgres
    REINDEX TABLE testtable;
    #僅重建指定索引testtable_idx
    /> reindexdb -i testtable_idx -e -U postgres postgres
    REINDEX INDEX testtable_idx;    
    #重建指定數據庫mydatabase的全部索引。
    /> reindexdb mydatabase

四、vacuumdb:

 

    收集垃圾并且分析一個PostgreSQL數據庫。
 

復制代碼代碼如下:

    vacuumdb [-options] [--full | -f] [--verbose | -v] [--analyze | -z] [-t table [(column [,...])]] [dbname]
    vacuumdb [-options] [--all | -a] [--full | -f] [--verbose | -v] [--analyze | -z]
 

    1. 命令行選項列表:
 
選項 說明
-a(--all) 清理所有數據庫。
-e(--echo) 回顯vacuumdb生成的命令并且把它發送到服務器。
-f(--full) 執行完全清理。
-q(--quiet) 不顯示響應。
-t table [(column[,...])] 僅僅清理或分析指定的數據表,字段名只是在與--analyze選項聯合使用時才需要聲明。
-v(--verbose) 在處理過程中打印詳細信息。
-z(--analyze) 計算用于規劃器的統計值。
-h(--host=host) 指定PostgreSQL服務器的主機名。
-p(--port=port) 指定服務器的監聽端口,如不指定,則為缺省的5432。
-U(--username=username) 本次操作的登錄用戶名。
-w(--no-password) 如果當前登錄用戶沒有密碼,可以指定該選項直接登錄。

 

2. 應用示例:

復制代碼代碼如下:

    #清理整個數據庫mydatabase。  
    /> vacuumdb -e mydatabase
    VACUUM;
    #清理并分析postgres數據庫中的testtable表。
    /> vacuumdb -e --analyze --table 'testtable' postgres
    VACUUM ANALYZE testtable;
    #清理并分析postgres數據庫中的testtable表的i字段。
    /> vacuumdb -e --analyze -t 'testtable(i)' postgres
    VACUUM ANALYZE testtable(i);
 

 

五、createuser:

    定義一個新的PostgreSQL用戶帳戶,需要說明的是只有超級用戶或者是帶有CREATEROLE權限的用戶才可以執行該命令。如果希望創建的是超級用戶,那么只能以超級用戶的身份執行該命令,換句話說,帶有CREATEROLE權限的普通用戶無法創建超級用戶。該命令的使用方式如下:
 

復制代碼代碼如下:

    createuser [option...] [username]
 

    1. 命令行選項列表:

 

 

選項 說明
-c number 設置新創建用戶的最大連接數,缺省為沒有限制。
-d(--createdb) 允許該新建用戶創建數據庫。
-D(--no-createdb) 禁止該新建用戶創建數據庫。
-e(--echo) 回顯createuser生成的命令并且把它發送到服務器。
-E(--encrypted) 對保存在數據庫里的用戶口令加密。如果沒有聲明, 則使用缺省值。
-i(--inherit) 新創建的角色將自動繼承它的組角色的權限。
-I(--no-inherit) 新創建的角色不會自動繼承它的組角色的權限。
-l(--login) 新角色將被授予登錄權限,該選項為缺省選項。
-L(--no-login) 新角色沒有被授予登錄權限。
-N(--unencrypted) 不對保存在數據庫里的用戶口令加密。如果沒有聲明, 則使用缺省值。
-P(--pwprompt) 如果給出該選項,在創建用戶時將提示設置口令。
-r(--createrole) 新角色被授予創建數據庫的權限。
-R(--no-createrole) 新角色沒有被授予創建數據庫的權限。
-s(--superuser) 新角色為超級用戶。
-S(--no-superuser) 新角色不是超級用戶。
-h(--host=host) 指定PostgreSQL服務器的主機名。
-p(--port=port) 指定服務器的監聽端口,如不指定,則為缺省的5432。
-U(--username=username) 本次操作的登錄用戶名。
-w(--no-password) 如果當前登錄用戶沒有密碼,可以指定該選項直接登錄。

 

2. 應用示例:

復制代碼代碼如下:

    # 對于有些沒有缺省設置的選項,如-(d/D)、-(s/S)和-(r/R),如果在命令行中沒有直接指定,那么在執行該命令是將會給出提示信息。
    # 需要注意的是該提示將會掛起自動化腳本,直到輸入后命令才會繼續執行。
    /> createuser -U postgres myuser
    Shall the new role be a superuser? (y/n) n
    Shall the new role be allowed to create databases? (y/n) y
    Shall the new role be allowed to create more new roles? (y/n) n
    CREATE ROLE myuser NOSUPERUSER CREATEDB NOCREATEROLE INHERIT LOGIN;
    # 通過psql登錄后查看系統視圖,以驗證該用戶是否成功創建,以及新角色的權限是否正確。
    /> psql
    postgres=# SELECT rolname,rolsuper,rolinherit,rolcreaterole,rolcreatedb,rolcanlogin FROM pg_roles WHERE rolname = 'myuser';
     rolname | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcanlogin
    ---------+----------+------------+---------------+-------------+-------------
     myuser  | f           | t             | f                  | t                 | t
    (1 row)
    # 為了保證自動化腳本不會被該命令的提示掛起,我們需要在執行該命令時指定所有沒有缺省值的選項。
    /> createuser -U postgres -e -S -D -R myuser2
    CREATE ROLE myuser2 NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
    # 我們可以在創建用戶時即刻指定該用戶的密碼,該操作由-P選項完成,然而這樣的用法一定會掛起自動化腳本,
    # 因此我們可以采用一種折中的辦法,即在創建用戶時不指定密碼,在自動化腳本執行成功后再手工該用戶的密碼。
    /> createuser -P -s -e myuser3
    Enter password for new role:
    Enter it again:
    CREATE ROLE myuser3 PASSWORD 'md5fe54c4f3129f2a766f53e4f4c9d2a698' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;

六、dropuser:

 

    刪除一個PostgreSQL用戶帳戶,需要說明的是只有超級用戶或帶有CREATEROLE權限的用戶可以執行該命令,如果要刪除超級用戶,只能通過超級用戶的身份執行該命令。該命令的使用方式如下:
 

復制代碼代碼如下:

    dropuser [option...] [username]
 

    1. 命令行選項列表:

 

 

選項 說明
-e(--echo) 回顯dropuser生成的命令并且把它發送到服務器。
-i(--interactive) 在做任何破壞性動作前提示。
-h(--host=host) 指定PostgreSQL服務器的主機名。
-p(--port=port) 指定服務器的監聽端口,如不指定,則為缺省的5432。
-U(--username=username) 本次操作的登錄用戶名。

 

  2. 應用示例:
 

復制代碼代碼如下:

    # 直接刪除指定用戶。
    /> dropuser -e myuser3
    DROP ROLE myuser3;
    # 在刪除指定用戶時,該命令會給出提示信息,以免誤操作。
    /> dropuser -e -i myuser2
    Role "myuser2" will be permanently removed.
    Are you sure? (y/n) y
    DROP ROLE myuser2;
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级在线播放| 日日噜噜噜夜夜爽亚洲精品| 日韩中文字幕在线观看| 欧美在线免费观看| 成人激情免费在线| 国产精品第七十二页| 国产色婷婷国产综合在线理论片a| 国产成人福利视频| 一个人看的www久久| 国产成人精品亚洲精品| 亚洲一区二区三区乱码aⅴ| 中文国产成人精品| 亚洲色无码播放| 性欧美在线看片a免费观看| 色偷偷88888欧美精品久久久| 欧美黄色成人网| 日韩av大片在线| 永久免费看mv网站入口亚洲| 欧美日韩美女在线| 亚洲有声小说3d| 91在线免费视频| 精品日韩美女的视频高清| 成人欧美在线观看| 中日韩美女免费视频网址在线观看| 国产精品美女主播| 日韩中文字幕精品视频| 久久精品国产一区| 性亚洲最疯狂xxxx高清| 日韩国产精品亚洲а∨天堂免| 欧美久久精品一级黑人c片| 国产91免费观看| 亚洲欧美激情一区| 亚洲一区二区中文字幕| 国产精自产拍久久久久久蜜| 国产欧美日韩中文| 综合网中文字幕| 欧洲亚洲妇女av| 精品国产乱码久久久久酒店| 亚洲欧美成人一区二区在线电影| 国产高清在线不卡| 国产一区二区三区在线看| 日韩电视剧免费观看网站| 亚洲变态欧美另类捆绑| 色哟哟入口国产精品| 成人精品视频99在线观看免费| 91精品国产91久久久久久吃药| 欧美一级淫片丝袜脚交| 欧美精品18videos性欧| 国产亚洲欧洲高清| 国产精品狠色婷| 国产精品免费小视频| 亚洲欧美国产日韩中文字幕| 欧美大学生性色视频| 国产欧美最新羞羞视频在线观看| 亚洲欧美在线看| 日韩精品在线观看一区| 国产精品久久久久久超碰| 久久久999精品视频| 亚洲国产精品嫩草影院久久| 欧美老少配视频| 成人福利视频网| 日韩亚洲欧美中文在线| 亚洲sss综合天堂久久| 一区二区欧美日韩视频| 国产日韩在线亚洲字幕中文| 91夜夜揉人人捏人人添红杏| 国产精品视频大全| 久久综合伊人77777尤物| 成人免费淫片aa视频免费| 成人福利在线视频| 亚洲午夜未满十八勿入免费观看全集| 日韩欧美视频一区二区三区| 亚洲新声在线观看| 亚洲一区二区精品| 精品久久中文字幕久久av| 亚洲天堂av电影| 日韩中文字幕免费视频| 欧美成人性生活| 欧美高清在线播放| 国产精品视频男人的天堂| 欧美亚洲成人xxx| 久久夜色精品亚洲噜噜国产mv| 亚洲国产精久久久久久久| 亚洲成人中文字幕| 日韩中文字幕免费| 欧美老女人性视频| 精品亚洲国产视频| 成人免费视频网| 亚洲第一色中文字幕| 日本久久久久久久| 欧美极度另类性三渗透| 色综合久久88| 日韩精品高清视频| 美日韩在线视频| 91免费视频网站| 色婷婷综合久久久久| 另类图片亚洲另类| 97精品在线观看| 久久久久久久91| 色偷偷噜噜噜亚洲男人| 欧美精品电影免费在线观看| 国产女同一区二区| 57pao成人永久免费视频| 国产精品电影网| 亚洲国产精久久久久久| 91精品国产综合久久久久久蜜臀| 中文精品99久久国产香蕉| 亚洲黄色免费三级| 亚洲欧美激情在线视频| 91亚洲永久免费精品| 日韩欧美高清在线视频| 欧美老少做受xxxx高潮| 97成人精品视频在线观看| 777777777亚洲妇女| 久久久视频精品| 久久夜色精品国产| 亚洲va电影大全| 亚洲欧美另类中文字幕| 91九色在线视频| 欧美午夜电影在线| 日韩欧美在线看| 亚洲精品国产精品国自产在线| 国产精品第二页| 2019av中文字幕| 这里精品视频免费| 亚洲剧情一区二区| 欧美激情亚洲综合一区| 国产97色在线| 久久色免费在线视频| 国产成人在线一区二区| 欧美大片网站在线观看| 成人精品网站在线观看| www.久久撸.com| 国产精品久久久久久久久久三级| 精品久久久久久国产| 色偷偷亚洲男人天堂| 欧美极品少妇全裸体| 欧美专区日韩视频| 亚洲精品一区二区久| 中文字幕不卡av| 亚洲码在线观看| 久久精品电影网| 美女福利视频一区| 欧美成人免费va影院高清| 美女av一区二区三区| 不卡在线观看电视剧完整版| 上原亚衣av一区二区三区| 曰本色欧美视频在线| 68精品国产免费久久久久久婷婷| 久久手机精品视频| 高清日韩电视剧大全免费播放在线观看| 欧美激情影音先锋| 日韩在线观看网站| 亚洲人线精品午夜| 中文字幕日韩在线观看| 欧美在线一级视频| 北条麻妃一区二区在线观看| 欧美大片在线影院| 热久久99这里有精品| 国产精品高潮呻吟久久av无限| 日韩在线资源网| 日韩av手机在线| 欧美激情在线观看视频| 久久成人综合视频|