PostgresSQL安裝與使用

weixin_34019929發表於2017-03-23

系統版本

CentOS6.8

安裝官方yum源

yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-centos96-9.6-3.noarch.rpm
#檢視postgres版本
yum list postgres*

安裝軟體

yum install postgresql96-server postgresql96-devel

初始化資料庫

service postgresql-9.6 initdb
這裡使用預設初始化位置:/var/lib/pgsql/9.6/data/

啟動資料庫

chkconfig postgresql-9.6 on #設定開機自啟動,可選
service postgresql-9.6 start

登入資料庫

su postgres
psql

建立資料庫

CREATE DATABASE villains;
CREATE DATABASE villains ENCODING 'UTF-8' #指定資料庫編碼,預設為utf-8

建立使用者

CREATE USER batman WITH PASSWORD 'Extremly-Secret-Password';  
ALTER user postgres with password 'foobar'; #修改密碼

給使用者賦予許可權

ALTER DATABASE villains owner to batman; #改變資料庫所有者
GRANT ALL PRIVILEGES ON DATABASE villains to batman; 

GRANT SELECT ON DATABASE villains to alfred;  #或者僅賦予部分許可權
可選許可權如下:
SELECT
INSERT
UPDATE
DELETE
RULE
REFERENCES
TRIGGER
CREATE
TEMPORARY
EXECUTE
USAGE
可以在建立資料庫的時候使用一個命令給予使用者(create database, create user and grant all privileges)
CREATE DATABASE villains OWNER batman;

檢視使用者 使用資料庫

# \du 檢視使用者
# \c villains 進入資料庫
# \l 檢視當前所有資料庫

建立表

CREATE TABLE super_villains (id serial PRIMARY KEY, name character varying(100), super_power character varying(100), weakness character varying(100));  
CREATE TABLE equipment (id serial PRIMARY KEY, name character varying(100), status character varying(100), special_move character varying(100)); 

檢視錶

# \d 檢視當前資料庫所有表
# \d+ equipment; 檢視具體表,以及欄位
# SELECT *  FROM information_schema.columns  WHERE table_name = 'equipment';  查詢語句

修改表欄位自增

#我們建立表的時候id欄位新增了serial,系統會為我們自動建立兩個序列表equipment_id_seq and super_villains_id_seq
#我們可以將他們繫結到id欄位以實現自增(應該預設就繫結了)
#ALTER table equipment alter id set default nextval('equipment_id_seq');  
#ALTER table super_villains alter id set default nextval('super_villains_id_seq');

插入資料

INSERT INTO equipment(name, status, special_move) VALUES('Utility Belt', 'Nice and yellow', 'All kind of cool stuff in your waist'); 
INSERT INTO super_villains(name, super_power, weakness) VALUES('The Joker', 'Extra Crazy', 'Super punch'); 

查詢資料

SELECT * from equipment;  
SELECT * from super_villains; 

配置允許遠端登入

#編輯/var/lib/pgsql/9.6/data/postgresql.conf
#listen_addresses = 'localhost'  替換為 listen_addresses = '*'  

配置使用者訪問許可權

在配置檔案pg_hba.conf中,將peer, ident均改成md5,這樣就可以像mysql一樣使用使用者名稱密碼登入
# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

命令列登入

# psql -U postgres postgres -h 127.0.0.1
-U 指定登入使用者 postgres
第二個postgres指明登入的資料庫
-h 登入主機地址