登錄
$ psql (連接數據庫,默認用戶和數據庫都是postgres) $ psql -U <user> -d <dbname>
數據庫操作
// 列舉數據庫,相當於show databases
$ \l
// 切換數據庫,相當與use dbname
$ \c <dbname>
// 列舉表,相當與show tables
$ \dt
// 查看表結構,相當於desc
$ \d tblname
// 創建數據庫
$ create database <dbname>
// 刪除數據庫
$ drop database <dbname>
// 創建表
$ create table ([字段名1] [類型1] ;,[字段名2] [類型2],......<,primary key (字段名m,字段名n,...)>;);
// 在表中插入數據
$ insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......);
// 備份數據庫
$ pg_dump -U postgres -f /tmp/postgres.sql postgres (導出postgres數據庫保存為postgres.sql) $ pg_dump -U postgres -f /tmp/postgres.sql -t test01 postgres (導出postgres數據庫中表test01的數據) $ pg_dump -U postgres -F t -f /tmp/postgres.tar postgres (導出postgres數據庫以tar形式壓縮保存為postgres.tar)
// 恢復數據庫
$ psql -U postgres -f /tmp/postgres.sql bk01 (恢復postgres.sql數據到bk01數據庫) $ pg_restore -U postgres -d bk01 /tmp/postgres.tar (恢復postgres.tar數據到bk01數據庫)
用戶操作
// 切換用戶
$ \c - <username>
// 創建用戶並設置密碼
$ CREATE USER 'username' WITH PASSWORD 'password'; $ CREATE ROLE 'username' CREATEDB PASSWORD 'password' LOGIN; (創建角色並授予創建數據庫及密碼登錄的屬性)
// 修改用戶密碼
$ ALTER USER 'username' WITH PASSWORD 'password';
// 數據庫授權
$ GRANT ALL PRIVILEGES ON DATABASE 'dbname' TO 'username';
// 修改用戶權限
$ ALTER ROLE 'username' createdb ; (授予創建數據庫權限) $ ALTER ROLE 'username' superuser ;(授予超級管理員權限)
// 角色屬性
login | login 只有具有 LOGIN 屬性的角色可以用做數據庫連接的初始角色名。 |
superuser | 數據庫超級用戶 |
createdb | 創建數據庫權限 |
createrole | 允許其創建或刪除其他普通的用戶角色(超級用戶除外) |
replication | 做流復制的時候用到的一個用戶屬性,一般單獨設定。 |
password | 在登錄時要求指定密碼時才會起作用,比如md5或者password模式,跟客戶端的連接認證方式有關 |
inherit | 用戶組對組員的一個繼承標志,成員可以繼承用戶組的權限特性 |