PostgreSQL簡介
PostgreSQL
PostgreSQL是以加州大學伯克利分校計算機系開發(fā)的 POSTGRES,現(xiàn)在已經(jīng)更名為PostgreSQL,版本 4.2為基礎(chǔ)的對象關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(ORDBMS)。PostgreSQL支持大部分 SQL標準并且提供了許多其他現(xiàn)代特性:復雜查詢、外鍵、觸發(fā)器、視圖、事務(wù)完整性、MVCC。同樣,PostgreSQL 可以用許多方法擴展,比如, 通過增加新的數(shù)據(jù)類型、函數(shù)、操作符、聚集函數(shù)、索引。免費使用、修改、和分發(fā) PostgreSQL,不管是私用、商用、還是學術(shù)研究使用。
psql
是PostgreSQL數(shù)據(jù)庫的命令行交互工具。
pgAdmin
是PostgreSQL數(shù)據(jù)庫的圖形化管理工具。
PostgreSQL安裝與卸載
官網(wǎng)安裝
在官網(wǎng)上下載安裝包或者使用官網(wǎng)提供的Postgres.app,這里就不詳細介紹了,因為我們這里使用homebrew來安裝。
homebrew安裝
brew install postgresql
初始化:
initdb /usr/local/var/postgres
創(chuàng)建數(shù)據(jù)庫和賬戶
創(chuàng)建數(shù)據(jù)庫和賬戶
mac安裝PostgreSQL后不會創(chuàng)建用戶名數(shù)據(jù)庫,執(zhí)行命令:
createdb
然后登錄PostgreSQL控制臺:
psql
psql連接數(shù)據(jù)庫默認選用的是當前的系統(tǒng)用戶
使用\l命令列出所有的數(shù)據(jù)庫,看到已存在用戶同名數(shù)據(jù)庫、postgres數(shù)據(jù)庫,但是postgres數(shù)據(jù)庫的所有者是當前用戶,沒有postgres用戶。
然后我們來完成以下幾件事:
一、創(chuàng)建postgres用戶
CREATE USER postgres WITH PASSWORD 'XXXXXX';
二、刪除默認生成的postgres數(shù)據(jù)庫
DROP DATABASE postgres;
三、創(chuàng)建屬于postgres用戶的postgres數(shù)據(jù)庫
CREATE DATABASE postgres OWNER postgres;
四、將數(shù)據(jù)庫所有權(quán)限賦予postgres用戶
GRANT ALL PRIVILEGES ON DATABASE postgres to postgres;
五、給postgres用戶添加創(chuàng)建數(shù)據(jù)庫的屬性
ALTER ROLE postgres CREATEDB;
這樣就可以使用postgres作為數(shù)據(jù)庫的登錄用戶了,并可以使用該用戶管理數(shù)據(jù)庫
登陸控制臺指令
psql -U [user] -d [database] -h [host] -p [port]
-U指定用戶,-d指定數(shù)據(jù)庫,-h指定服務(wù)器,-p指定端口
完整的登錄命令,比如使用postgres用戶登錄
psql -U postgres -d postgres
之前我們直接使用psql登錄控制臺,實際上使用的是缺省數(shù)據(jù)
user:當前mac用戶
database:用戶同名數(shù)據(jù)庫
主機:localhost
端口號:5432,postgresql的默認端口是5432
常用控制臺指令
\password:設(shè)置當前登錄用戶的密碼
\h:查看SQL命令的解釋,比如\h select。
\?:查看psql命令列表。
\l:列出所有數(shù)據(jù)庫。
\c [database_name]:連接其他數(shù)據(jù)庫。
\d:列出當前數(shù)據(jù)庫的所有表格。
\d [table_name]:列出某一張表格的結(jié)構(gòu)。
\du:列出所有用戶。
\e:打開文本編輯器。
\conninfo:列出當前數(shù)據(jù)庫和連接的信息。
\password [user]: 修改用戶密碼
\q:退出
使用PostgreSQL
現(xiàn)在來簡單的學習一下使用PostgreSQL,以下命令都在postgres=# 環(huán)境下
修改用戶密碼
之前我們用命令CREATE USER postgres WITH PASSWORD 'XXXXXX';創(chuàng)建了postgres用戶,現(xiàn)在我們來修改該用戶的密碼:
ALTER USER postgres WITH PASSWORD 'XXXXXX'
出現(xiàn)ALTER ROLE, 代表修改角色成功
創(chuàng)建和刪除數(shù)據(jù)庫用戶
創(chuàng)建user1用戶:CREATE USER user1 WITH PASSWORD 'XXXX'
查看數(shù)據(jù)庫用戶列表:\du
刪除數(shù)據(jù)庫用戶:drop user user1;
創(chuàng)建和刪除數(shù)據(jù)庫
創(chuàng)建數(shù)據(jù)庫:create database testdb;
查看數(shù)據(jù)庫列表:\l
刪除數(shù)據(jù)庫:drop database db1;
創(chuàng)建和刪除數(shù)據(jù)表
選擇數(shù)據(jù)庫:\c DatabaseName,比如\c testdb
創(chuàng)建數(shù)據(jù)庫表:CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);
刪除數(shù)據(jù)庫表: drop table company;
查看數(shù)據(jù)庫信息:\d
查詢數(shù)據(jù):select * from company
關(guān)于第三方連接本地數(shù)據(jù)庫的問題
如何設(shè)置PostgreSQL允許被遠程訪問
/usr/local/var/postgres/postgresql.conf
- 修改postgresql.conf
編輯或添加下面一行,使PostgreSQL可以接受來自任意IP的連接請求。
listen_addresses = '*'
- 修改pg_hba.conf
pg_hba.conf,位置與postgresql.conf相同,雖然上面配置允許任意地址連接PostgreSQL,但是這在pg中還不夠,我們還需在pg_hba.conf中配置服務(wù)端允許的認證方式。任意編輯器打開該文件,編輯或添加下面一行。
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 0.0.0.0/0 md5
默認pg只允許本機通過密碼認證登錄,修改為上面內(nèi)容后即可以對任意IP訪問進行密碼驗證。對照上面的注釋可以很容易搞明白每列的含義,具體的支持項可以查閱文末參考引用。
完成上兩項配置后執(zhí)行sudo service postgresql restart重啟PostgreSQL服務(wù)后,允許外網(wǎng)訪問的配置就算生效了。