(1)用戶實(shí)用程序:
createdb 創(chuàng)建一個(gè)新的PostgreSQL的數(shù)據(jù)庫(kù)(和SQL語(yǔ)句:CREATE DATABASE 相同)
createuser 創(chuàng)建一個(gè)新的PostgreSQL的用戶(和SQL語(yǔ)句:CREATE USER 相同)
dropdb 刪除數(shù)據(jù)庫(kù)
dropuser 刪除用戶
pg_dump 將PostgreSQL數(shù)據(jù)庫(kù)導(dǎo)出到一個(gè)腳本文件
pg_dumpall 將所有的PostgreSQL數(shù)據(jù)庫(kù)導(dǎo)出到一個(gè)腳本文件
pg_restore 從一個(gè)由pg_dump或pg_dumpall程序?qū)С龅哪_本文件中恢復(fù)PostgreSQL數(shù)據(jù)庫(kù)
psql 一個(gè)基于命令行的PostgreSQL交互式客戶端程序
vacuumdb 清理和分析一個(gè)PostgreSQL數(shù)據(jù)庫(kù),它是客戶端程序psql環(huán)境下SQL語(yǔ)句VACUUM的shell腳本封裝畸写,二者功能完全相同
(2)系統(tǒng)實(shí)用程序
- pg_ctl 啟動(dòng)驮瞧、停止、重啟PostgreSQL服務(wù)(比如:pg_ctl start 啟動(dòng)PostgreSQL服務(wù)艺糜,它和service postgresql start相同)
- pg_controldata 顯示PostgreSQL服務(wù)的內(nèi)部控制信息
- psql 切換到PostgreSQL預(yù)定義的數(shù)據(jù)庫(kù)超級(jí)用戶postgres剧董,啟用客戶端程序psql,并連接到自己想要的數(shù)據(jù)庫(kù)破停,比如說(shuō):
psql template1
出現(xiàn)以下界面翅楼,說(shuō)明已經(jīng)進(jìn)入到想要的數(shù)據(jù)庫(kù),可以進(jìn)行想要的操作了真慢。
template1=#
(3).在數(shù)據(jù)庫(kù)中的一些命令:
template1=# \l 查看系統(tǒng)中現(xiàn)存的數(shù)據(jù)庫(kù)
template1=# \q 退出客戶端程序psql
template1=# \c 從一個(gè)數(shù)據(jù)庫(kù)中轉(zhuǎn)到另一個(gè)數(shù)據(jù)庫(kù)中毅臊,如template1=# \c sales 從template1轉(zhuǎn)到sales
template1=# \dt 查看表
template1=# \d 查看表結(jié)構(gòu)
template1=# \di 查看索引
[基本數(shù)據(jù)庫(kù)操作]========================
- *創(chuàng)建數(shù)據(jù)庫(kù): create database [數(shù)據(jù)庫(kù)名];
- *查看數(shù)據(jù)庫(kù)列表: \d
- *刪除數(shù)據(jù)庫(kù): . drop database [數(shù)據(jù)庫(kù)名];
創(chuàng)建表: create table ([字段名1] [類型1] <references 關(guān)聯(lián)表名(關(guān)聯(lián)的字段名)>;,[字段名2] [類型2],......<,primary key (字段名m,字段名n,...)>;);
*查看表名列表: \d
*查看某個(gè)表的狀況: \d [表名]
*重命名一個(gè)表: alter table [表名A] rename to [表名B];
*刪除一個(gè)表: drop table [表名]; ========================================
[表內(nèi)基本操作]==========================
*在已有的表里添加字段: alter table [表名] add column [字段名] [類型];
*刪除表中的字段: alter table [表名] drop column [字段名];
*重命名一個(gè)字段: alter table [表名] rename column [字段名A] to [字段名B];
*給一個(gè)字段設(shè)置缺省值: alter table [表名] alter column [字段名] set default [新的默認(rèn)值];
*去除缺省值: alter table [表名] alter column [字段名] drop default;
在表中插入數(shù)據(jù): insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......);
修改表中的某行某列的數(shù)據(jù): update [表名] set [目標(biāo)字段名]=[目標(biāo)值] where [該行特征];
刪除表中某行數(shù)據(jù): delete from [表名] where [該行特征];
delete from [表名];--刪空整個(gè)表 ========================== ==========================
(4).PostgreSQL用戶認(rèn)證
PostgreSQL數(shù)據(jù)目錄中的pg_hba.conf的作用就是用戶認(rèn)證,可以在/usr/local/pgsql/data中找到黑界。
有以下幾個(gè)例子可以看看:
(1)允許在本機(jī)上的任何身份連接任何數(shù)據(jù)庫(kù)
TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local all all trust(無(wú)條件進(jìn)行連接)
(2)允許IP地址為192.168.1.x的任何主機(jī)與數(shù)據(jù)庫(kù)sales連接
TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host sales all 192.168.1.0 255.255.255.0 ident sameuser(表明任何操作系統(tǒng)用戶都能夠以同名數(shù)據(jù)庫(kù)用戶進(jìn)行連接)
(5).看了那么多管嬉,來(lái)一個(gè)完整的創(chuàng)建PostgreSQL數(shù)據(jù)庫(kù)用戶的示例吧
(1)進(jìn)入PostgreSQL高級(jí)用戶
(2)啟用客戶端程序皂林,并進(jìn)入template1數(shù)據(jù)庫(kù)
psql template1
(3)創(chuàng)建用戶
template1=# CREATE USER hellen WITH ENCRYPED PASSWORD'zhenzhen'
(4)因?yàn)樵O(shè)置了密碼,所以要編輯pg_hba.conf蚯撩,使用戶和配置文件同步础倍。
在原有記錄上面添加md5
local all hellen md5
(4)使用新用戶登錄數(shù)據(jù)庫(kù)
template1=# \q
psql -U hellen -d template1
PS:在一個(gè)數(shù)據(jù)庫(kù)中如果要切換用戶,要使用如下命令:
template1=# !psql -U tk -d template1
(6).設(shè)定用戶特定的權(quán)限
還是要用例子來(lái)說(shuō)明:
創(chuàng)建一個(gè)用戶組:
sales=# CREATE GROUP sale;
添加幾個(gè)用戶進(jìn)入該組
sales=# ALTER GROUP sale ADD USER sale1,sale2,sale3;
授予用戶級(jí)sale針對(duì)表employee和products的SELECT權(quán)限
sales=# GRANT SELECT ON employee,products TO GROUP sale;
在sale中將用戶user2刪除
sales=# ALTER GROUP sale DROP USER sale2;
(7).備份數(shù)據(jù)庫(kù)
可以使用pg_dump和pg_dumpall來(lái)完成胎挎。比如備份sales數(shù)據(jù)庫(kù):
pg_dump sales>/home/tk/pgsql/backup/1.bak