之前試過macports,但是看網上的評價不怎麼樣,主要是說會安裝一些其他的包,對於我這樣有潔癖的來說當然不行了。另外看到HomeBrew,便試了下,果然很爽,尤其是對於用慣了apt-get的來說。主頁上有很方便的安裝方法,但是蛋疼的是,在天朝常常會沒法連接,沒關係,可以打開這個地址,將網頁另存爲以.rb結尾的文件,然後終端中使用ruby 文件.rb就可以了。但是,有時候就是打開這個raw頁面也需要爬牆,唉,無奈。好在爬牆總不是什麼困難的事情。
安裝好HomeBrew之後,使用
brew update&brew upgrade
更新後,便可以開始postgresql了。
brew install postgresql
創建postgreSql數據庫:
initdb /usr/local/var/postgres
啓動服務:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
停止服務:
pg_ctl -D /usr/local/var/postgres stop -s -m fast
自動啓動服務:
mkdir -p ~/Library/LaunchAgents
cp /usr/local/Cellar/postgresql/9.2.4/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
刪除自動啓動服務:
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
好了,現在基本就算完成了,很簡單。這時候下載pgadmin3,安裝之後會出現role 'postgres' does not exist的錯誤,原因你是沒有創建postgres用戶。
createuser -d -a -P postgres
執行完這行命令後,postgresl角色就創建好了,再連接就不會報錯。
導入sql文件,如導入back.sql:
psql -d database_name -f back.sql
在linux下需要首先切換到postgres用戶再執行該命令:
su postgres
導出數據庫到文件:
pg_dump database_name > back.sql
卸載postgresql,如果是使用homebrew安裝的話,就和簡單了:
brew uninstall postgresql
如果是下載安裝包安裝的,有兩種方法。
1. 自動卸載,在安裝目錄下,mac下是/Applications/Postgresql下有個uninstall-postgresql.app,雙擊執行就可以了。
2. 手動刪除。
停止服務
sudo /sbin/SystemStarter stop postgresql-9.2
移除菜單圖標
sudo rm -rf /Applications/PostgreSQL 9.2
移除ini文件
sudo rm -rf /etc/postgres-reg.ini
移除startup items
sudo rm -rf /Library/StartupItems/postgresql-9.2
移除數據和安裝文件
sudo rm -rf /Library/PostgreSQL/9.2
移除postgres用戶
sudo dscl . delete /users/postgres
PS:
可參考這兩篇blog
1. http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/
2. http://kidsreturn.org/2012/03/install-postgresql-on-mac-lion-via-homebrew/
基本操作
PostgreSQL安裝好後,其會自動以本機當前登錄用戶名創建三個數據庫(Schema),你可以運行以下命令查看:psql -l
。
psql是PostgreSQL的交互式命令行工具
連接數據庫
psql -d DBname -h Hostname -p Port -U Username
=> 指定參數連接psql postgres
=> 連接當前用戶名下的postgres數據庫
創建用戶
連接數據庫
psql postgres
創建用戶
CREATE USER username [WITH PASSWORD 'password'];
創建數據庫
CREATE DATABASE dbname;
授權
授予所有權限
GRANT ALL PRIVILEGES ON DATABASE dbname to username;
授予查詢權限
GRANT SELECT ON DATABASE dbname to username;
權限列表
SELECT
INSERT
UPDATE
DELETE
RULE
REFERENCES
TRIGGER
CREATE
TEMPORARY
EXECUTE
USAGE
常用命令
連接數據庫
psql postgres
列出所有數據庫
postgres=# \l
列出用戶
postgres=# \du
列出數據表
postgres=# \dt
描述數據表
postgres=# \d tablename
postgres=# 爲命令行提示符