Linux下安裝postgresql,建立使用者遠端訪問及一些簡單操作
今天下午花了好長時間才使得postgresql正常執行到了Linux環境下,感謝網路分享者,現在整理下以備再次使用:
一、postgresql yum安裝
1.CentOS6安裝postgresql9.0 yum 倉庫:直接網盤下載:https://pan.baidu.com/s/1o7PF5ua 執行:rpm -i pgdg-centos92-9.2-7.noarch.rpm
2.安裝新版本的Postgresql:yum install postgresql92-server postgresql92-contrib
在centos用yum安裝postgresql的路徑為:/var/lib/pgsql/。
注:如果已安裝postgresql或有舊版本可以解除安裝刪除,下邊有詳細介紹舊版本解除安裝(由於我安裝了一個8.0版本postgresql,安裝時出了點問題,所以解除安裝了重灌裝了個9.2版本的postgresql)
3.初始化資料庫:/etc/init.d/postgresql-9.2 initdb
4.啟動資料庫:/etc/init.d/postgresql-9.2 start
注意:postgresql啟動後就可以利用servicepostgresql-9.2 start、restart或者stop來控制它了。
5.把postgresql加入自啟動列表
cd /etc/init.d
chkconfig --add postgresql-9.2
6.檢視一下自啟動列表:chkconfig --list。
7.PostgreSQL 資料庫預設會建立一個postgres的資料庫使用者作為資料庫的管理員,預設密碼為空,我們需要修改為指定的密碼,這裡設定為’postgres’
在控制檯輸入以下命令:
# su - postgres
$ psql
# ALTER USER postgres WITH PASSWORD 'postgres';
# select * from pg_shadow ;
# create database 資料庫名;
# \c資料庫名
david=# 寫SQL語句
8、安裝成功。
二、檢視並刪除postgresql
1、先把原來的postgresql安裝包找出來
[[email protected] postgresql]# rpm -qa|grep post
postgresql-docs-8.0.3-1.1AX
postgresql-libs-8.0.3-1.1AX
freeradius-postgresql-1.0.1-3.RHEL4.1AX
......
注:查詢命令格式:
rpm -q ( or --query) options
引數:
pkg1 ... pkgN :查詢已安裝的軟體包詳細選項
-a 查詢所有安裝的軟體包而grep post則是查詢所有列表中包含"post"字串的項
2、刪除舊版本
rpm -ev postgresql-docs-8.0.3-1.1AX
rpm -ev --nodeps postgresql-libs-8.0.3-1.1AX
rpm -ev freeradius-postgresql-1.0.1-3.RHEL4.1AX
……
注:刪除命令格式:
rpm -e ( or --erase) options pkg1 ... pkgN
引數
pkg1 ... pkgN :要刪除的軟體包詳細選項
--nodeps 不檢查依賴性通用選項
-v 顯示附加資訊
-vv 顯示除錯資訊
3. 列出新的postgresql列表,逐個安裝
rpm -ivh --nodeps postgresql-8.2.3-1PGDG.i386.rpm
rpm -ivh --nodeps postgresql-contrib-8.2.3-1PGDG.i386.rpm
rpm -ivh --nodeps postgresql-debuginfo-8.2.3-1PGDG.i386.rpm
……
注:安裝命令格式
rpm -i ( or --install) options file1.rpm ... fileN.rpm
引數:
file1.rpm ... fileN.rpm 將要安裝的RPM包的檔名詳細選項
--nodeps 不檢查依賴性關係
-v 顯示附加資訊
4. 初始化資料庫
#su postgres
bash-3.00$ PGDATA=/var/lib/pgsql/data
bash-3.00$ export PGDATA
bash-3.00$ initdb --encoding=utf-8
5. 啟動與使用
bash-3.00$ postmaster -i -D ~/data &
bash-3.00$ createdb mydb
bash-3.00$ psql mydb
6. OK.
三、Postgresql控制檯命令
§\q:命令退出控制檯
§\password:為XXX使用者設定一個密碼。
§\h:檢視SQL命令的解釋,比如\h select。
§\?:檢視psql命令列表。
§\l:列出所有資料庫。
§\c [database_name]:連線其他資料庫。
§\d:列出當前資料庫的所有表格。
§\d [table_name]:列出某一張表格的結構。
§\du:列出所有使用者。
§\e:開啟文字編輯器。
§\conninfo:列出當前資料庫和連線的資訊。
四、PostgresSQL 資料庫配置實現遠端訪問
安裝PostgreSQL資料庫之後,預設是隻接受本地訪問連線。如果想在其他主機上訪問PostgreSQL資料庫伺服器,就需要進行相應的配置。只需要修改/var/lib/pgsql/9.2/data/目錄下的pg_hba.conf和postgresql.conf。
pg_hba.conf:配置對資料庫的訪問許可權,
postgresql.conf:配置PostgreSQL資料庫伺服器的相應的引數。
1、修改pg_hba.conf
這個檔案最後有一個列表,它決定了分派了每一個使用者的許可權,以及認證方式。格式是“Type Database User Address Method”,要注意的是method最好寫md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
host all all 0.0.0.0/0 md5
# IPv6 local connections:
host all all ::1/128 ident
2.修改postgresql.conf檔案,將資料庫伺服器的監聽模式修改為監聽所有主機發出的連線請求。
將listen_addresses前的#去掉,並將listen_addresses ='localhost'改成listen_addresses = '*'
檢視:[[email protected] ~]# ps -ef|grep post
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
#port = 5432 # (change requires restart)
3、重啟服務以使設定生效
# service postgresql-9.2 restart
五、資料庫操作
基本的資料庫操作,就是使用一般的SQL語言。
# 建立新表
CREATE TABLEuser_tbl(name VARCHAR(20), signup_date DATE);
# 插入資料
INSERT INTOuser_tbl(name, signup_date) VALUES('張三', '2013-12-22');
# 選擇記錄
SELECT * FROM user_tbl;
# 更新資料
UPDATE user_tbl setname = '李四' WHERE name = '張三';
# 刪除記錄
DELETE FROM user_tblWHERE name = '李四' ;
# 新增欄位
ALTER TABLE user_tblADD email VARCHAR(40);
# 更新結構
ALTER TABLE user_tblALTER COLUMN signup_date SET NOT NULL;
# 更名欄位
ALTER TABLE user_tblRENAME COLUMN signup_date TO signup;
# 刪除欄位
ALTER TABLE user_tblDROP COLUMN email;
# 表格更名
ALTER TABLE user_tblRENAME TO backup_tbl;
# 刪除表格
DROP TABLE IF EXISTSbackup_tbl;
新增新使用者和新資料庫以後,就要以新使用者的名義登入資料庫,這時使用的是psql命令。
psql -U dbuser -d exampledb -h 127.0.0.1 -p5432
上面命令的引數含義如下:-U指定使用者,-d指定資料庫,-h指定伺服器,-p指定埠。
輸入上面命令以後,系統會提示輸入dbuser使用者的密碼。輸入正確,就可以登入控制檯了。
psql命令存在簡寫形式。如果當前Linux系統使用者,同時也是PostgreSQL使用者,則可以省略使用者名稱(-U引數的部分)。舉例來說,我的Linux系統使用者名稱為ruanyf,且PostgreSQL資料庫存在同名使用者,則我以ruanyf身份登入Linux系統後,可以直接使用下面的命令登入資料庫,且不需要密碼。
psql exampledb
此時,如果PostgreSQL內部還存在與當前系統使用者同名的資料庫,則連資料庫名都可以省略。比如,假定存在一個叫做ruanyf的資料庫,則直接鍵入psql就可以登入該資料庫。
psql
另外,如果要恢復外部資料,可以使用下面的命令。
psql exampledb < exampledb.sql
借鑑網站:http://wandejun1012.iteye.com/blog/2015777
http://www.educity.cn/linux/1581284.html
http://www.tuicool.com/articles/qei2Ij
http://www.cnblogs.com/mchina/archive/2012/06/06/2539003.html
http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html