1. 程式人生 > >Linux下安裝postgresql,建立使用者遠端訪問及一些簡單操作

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 startrestart或者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.confpostgresql.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