postgresql 安装使用
PostgreSQL 中文社區(qū)在線文檔:http://www.postgres.cn/document? ? ? ??http://shouce.jb51.net/postgresql/
PostgreSQL 英文官網(wǎng):https://www.postgresql.org/docs/
知乎 -?PostgreSQL 與 MySQL 相比,優(yōu)勢(shì)何在?:https://www.zhihu.com/question/20010554
阿里云大學(xué) - PostgreSQL數(shù)據(jù)庫(kù)從入門到精通
易百 - PostgreSQL教程:http://www.yiibai.com/postgresql/
PostgreSQL 是以加州大學(xué)伯克利分校計(jì)算機(jī)系開發(fā)的 POSTGRES 版本 4.2 為基礎(chǔ)的對(duì)象關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(ORDBMS),簡(jiǎn)稱 pgsql,PostgreSQL支持大部分 SQL標(biāo)準(zhǔn)并且提供了許多其他現(xiàn)代特性:復(fù)雜查詢、外鍵、觸發(fā)器、視圖、事務(wù)完整性、MVCC(多版本并發(fā)控制)。同樣,PostgreSQL 可以用許多方法擴(kuò)展,比如,通過(guò)增加新的數(shù)據(jù)類型、函數(shù)、操作符、聚集函數(shù)、索引、方法、過(guò)程語(yǔ)言,并且因?yàn)樵S可證的靈活,任何人都可以以任何目的免費(fèi)使用,修改,和分發(fā) PostgreSQL, 不管是私用,商用,還是學(xué)術(shù)研究使用。
1. 安裝
首先,安裝PostgreSQL客戶端。
sudo apt-get install postgresql-client然后,安裝PostgreSQL服務(wù)器。 第一步:安裝 運(yùn)行命令:sudo apt-get install postgresql -y第二步:安全設(shè)置 安裝 postgresql 之后系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)空密碼的 Linux 的用戶 postgres,現(xiàn)在為 postgres 用戶添加密碼 (cat /etc/passwd | grep post ) sudo passwd postgres第三步:連接數(shù)據(jù)庫(kù) systemctl start postgresql // 啟動(dòng) postgresql 服務(wù) su - postgresqlc // 切換到 postgresql 用戶 psql postgres 第四步:查看幫助 postgres=# help
如果在 root 用戶下執(zhí)行 psql 時(shí),會(huì)報(bào)錯(cuò)。報(bào)錯(cuò)如下:可以看到我 Linux 中的 root 用戶和 king 用戶 在 psql 中角色都不存在
在PostgreSQL 里沒(méi)有區(qū)分用戶和角色的概念,"CREATE USER" 為 "CREATE ROLE" 的別名,這兩個(gè)命令幾乎是完全相同的,唯一的區(qū)別是"CREATE USER" 命令創(chuàng)建的用戶默認(rèn)帶有LOGIN屬性,而"CREATE ROLE" 命令創(chuàng)建的用戶默認(rèn)不帶LOGIN屬性(CREATE USER is equivalent to CREATE ROLE except that CREATE USER assumes LOGIN by default, while CREATE ROLE does not)。現(xiàn)在在 postgresql 中創(chuàng)建一個(gè)名為 root的角色(Postgresql 的超級(jí)用戶是 postgres):
( *******?注意:語(yǔ)句后面的分號(hào)? ; 不能省略?********** )
正常情況下,安裝完成后,PostgreSQL服務(wù)器會(huì)自動(dòng)在本機(jī)的5432端口開啟。
如果還想安裝圖形管理界面,可以運(yùn)行下面命令。(pgadmin3 是一個(gè)設(shè)計(jì),維護(hù)和管理 Postgres 數(shù)據(jù)庫(kù)用的通用工具) sudo apt-get install pgadmin3連接不成功要注意的地方:注意服務(wù)器的防火墻規(guī)則、修改服務(wù)器連接監(jiān)聽 ( postgersql.conf 配置文件 )、修改連接認(rèn)真方式 ( pg_hba.conf 配置文件 )。
http://www.jianshu.com/p/3a1bcd7973db
2. 添加新用戶和新數(shù)據(jù)庫(kù)
PostgreSQL 安裝后,默認(rèn)生成一個(gè)名為 postgres 的數(shù)據(jù)庫(kù) 和 一個(gè)名為 postgres 的數(shù)據(jù)庫(kù)用戶。這里需要注意的是,同時(shí)還生成了一個(gè)名為 postgres 的 Linux 系統(tǒng)用戶,并且屬于 postgres 用戶組(可以 su - postgres ,然后執(zhí)行 groups 命令,可以看到 屬于 postgres 組)。
下面,我們使用 postgres 用戶,來(lái)生成其他用戶和新數(shù)據(jù)庫(kù)。好幾種方法可以達(dá)到這個(gè)目的,
這里介紹兩種。一是先進(jìn)入psql環(huán)境,即使用 PostgreSQL控制臺(tái),然后再連接數(shù)據(jù)庫(kù)。二是直接在系統(tǒng)shell下執(zhí)行psql命令。
下面分別給出實(shí)例:
第一種方法,使用PostgreSQL控制臺(tái)。
首先,新建一個(gè)Linux新用戶,可以取你想要的名字,這里為dbuser。命令:sudo adduser dbuser
然后,切換到postgres用戶。命令:sudo su - postgres
下一步,使用psql命令登錄PostgreSQL控制臺(tái)。命令:psql
這時(shí)相當(dāng)于系統(tǒng)用戶postgres以同名數(shù)據(jù)庫(kù)用戶的身份,登錄數(shù)據(jù)庫(kù),這時(shí)不用輸入密碼(默認(rèn)創(chuàng)建的 postgres 用戶沒(méi)有密碼)
如果一切正常,系統(tǒng)提示符會(huì)變?yōu)?#34;postgres=#",表示這時(shí)已經(jīng)進(jìn)入了數(shù)據(jù)庫(kù)控制臺(tái)。以下的命令都在控制臺(tái)內(nèi)完成。
第二種方法,使用shell命令行。
添加新用戶和新數(shù)據(jù)庫(kù),除了在PostgreSQL控制臺(tái)內(nèi),還可以在shell命令行下完成。這是因?yàn)镻ostgreSQL提供了命令行程序createuser和createdb。
還是以新建用戶dbuser和數(shù)據(jù)庫(kù)exampledb為例。
首先,創(chuàng)建數(shù)據(jù)庫(kù)用戶dbuser,并指定其為超級(jí)用戶。命令:sudo -u postgres createuser --superuser dbuser
然后,登錄數(shù)據(jù)庫(kù)控制臺(tái),設(shè)置dbuser用戶的密碼,完成后退出控制臺(tái)。
sudo -u postgres psql
\password dbuser
\q
接著,在shell命令行下,創(chuàng)建數(shù)據(jù)庫(kù)exampledb,并指定所有者為dbuser。命令:sudo -u postgres createdb -O dbuser exampledb
3. 登錄數(shù)據(jù)庫(kù)
添加新用戶和新數(shù)據(jù)庫(kù)以后,就要以新用戶的名義登錄數(shù)據(jù)庫(kù),這時(shí)使用的是psql命令。
psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432
上面命令的參數(shù)含義如下:-U指定用戶,-d指定數(shù)據(jù)庫(kù),-h指定服務(wù)器,-p指定端口。
輸入上面命令以后,系統(tǒng)會(huì)提示輸入dbuser用戶的密碼。輸入正確,就可以登錄控制臺(tái)了。
psql命令存在簡(jiǎn)寫形式。如果當(dāng)前Linux系統(tǒng)用戶,同時(shí)也是PostgreSQL用戶,則可以省略用戶名(-U參數(shù)的部分)。
舉例來(lái)說(shuō),我的Linux系統(tǒng)用戶名為ruanyf,且PostgreSQL數(shù)據(jù)庫(kù)存在同名用戶,則我以ruanyf身份登錄Linux系統(tǒng)后,可以直接使用下面的命令登錄數(shù)據(jù)庫(kù),且不需要密碼。
psql exampledb
此時(shí),如果PostgreSQL內(nèi)部還存在與當(dāng)前系統(tǒng)用戶同名的數(shù)據(jù)庫(kù),則連數(shù)據(jù)庫(kù)名都可以省略。比如,假定存在一個(gè)叫做ruanyf的數(shù)據(jù)庫(kù),則直接鍵入psql就可以登錄該數(shù)據(jù)庫(kù)。
psql
另外,如果要恢復(fù)外部數(shù)據(jù),可以使用下面的命令。
psql exampledb < exampledb.sql
4. 控制臺(tái)命令
除了前面已經(jīng)用到的\password命令(設(shè)置密碼)和\q命令(退出)以外,控制臺(tái)還提供一系列其他命令。
常用命令
(1)列出所有的數(shù)據(jù)庫(kù)mysql: show databasespsql: \l或\list (2)切換數(shù)據(jù)庫(kù)mysql: use dbnamepsql: \c dbname (3)列出當(dāng)前數(shù)據(jù)庫(kù)下的數(shù)據(jù)表mysql: show tablespsql: \dt 或者 \d (4)列出指定表的所有字段mysql: show columns from table namepsql: \d tablename (5)查看指定表的基本情況mysql: describe tablenamepsql: \dt tablename 或者 \d 表名 (6)退出登錄mysql: quit 或者\(yùn)qpsql:\q查看某個(gè)庫(kù)中某個(gè)表的記錄:select * from apps limit 1; 顯示字符集:\encoding配置postgresql
[root@rudder data]# mkdir -p /var/lib/pgsql/data //創(chuàng)建pgsql的數(shù)據(jù)庫(kù)目錄 [root@rudder pgsql]# cd /var/lib/pgsql [root@rudder pgsql]# chown postgres.postgres data //改變目錄的所屬用戶用組 [root@rudder pgsql]# su postgres //切換到postgres,不然初始化不了 bash-3.2$ initdb -E UTF-8 -D /var/lib/pgsql/data --locale=en_US.UTF-8 -U postgres -W //初始化數(shù)據(jù)庫(kù) The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale en_US.UTF-8. fixing permissions on existing directory /var/lib/pgsql/data ... ok creating directory /var/lib/pgsql/data/global ... ok creating directory /var/lib/pgsql/data/pg_xlog ... ok creating directory /var/lib/pgsql/data/pg_xlog/archive_status ... ok creating directory /var/lib/pgsql/data/pg_clog ... ok creating directory /var/lib/pgsql/data/pg_subtrans ... ok creating directory /var/lib/pgsql/data/pg_twophase ... ok creating directory /var/lib/pgsql/data/pg_multixact/members ... ok creating directory /var/lib/pgsql/data/pg_multixact/offsets ... ok creating directory /var/lib/pgsql/data/base ... ok creating directory /var/lib/pgsql/data/base/1 ... ok creating directory /var/lib/pgsql/data/pg_tblspc ... ok selecting default max_connections ... 100 selecting default shared_buffers ... 1000 creating configuration files ... ok creating template1 database in /var/lib/pgsql/data/base/1 ... ok initializing pg_authid ... ok Enter new superuser password: //超級(jí)管理員密碼 Enter it again: //確認(rèn)密碼 initdb: removing contents of data directory "/var/lib/pgsql/data" 這樣就初始化就好了。修改/var/lib/pgsql/data/postgresql.conf listen_addresses = '*' //監(jiān)聽所有ip的連接,默認(rèn)是本機(jī) port = 5432 //這個(gè)不開也行,默認(rèn)就是5432端口pgsql是命令行的管理工具,但是開發(fā)時(shí)肯定要用pgadmin遠(yuǎn)程連接。所以權(quán)限是要放大,listen_addresses = '*' 全部放開,當(dāng)然也可以,設(shè)置局域網(wǎng)的IP段。
修改/var/lib/pgsql/data/pg_hba.conf # TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 md5 host all all 0.0.0.0/0 md5 //這一行我加的,所有IP和用戶,密碼對(duì)都可以連接 # IPv6 local connections: host all all ::1/128 md5 啟動(dòng)并查看
[root@rudder data]# /etc/init.d/postgresql start //啟動(dòng) Initializing database: [ OK ] Starting postgresql service: [ OK ] [root@rudder data]# netstat -tpnl |grep 5432 //查看 tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 27806/postmaster用postgres用戶登錄,并改密碼
[root@rudder data]# su postgres //切換用戶 bash-3.2$ psql -U postgres //連接pgsql server Welcome to psql 8.1.23, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit postgres=# Alter USER postgres WITH PASSWORD '***密碼**'; //添加密碼 ALTER ROLE //出現(xiàn)這個(gè)才算成功,第一次操作沒(méi)成功,pgadmin連不上 postgres-# \q //退出
5. 數(shù)據(jù)庫(kù)操作
基本的數(shù)據(jù)庫(kù)操作,就是使用一般的SQL語(yǔ)言。
? ? ? ? ? 開源數(shù)據(jù)庫(kù) PostgreSQL 中文資料非常缺乏,很多社區(qū)朋友苦于上手的中文資料少,因此匯總收集以下 PostgreSQL 中文資料,包括 PostgreSQL 中文手冊(cè),中文書籍,技術(shù)博客,培訓(xùn)視頻和歷屆 PostgreSQL 大會(huì)材料。希望這些中文資料能夠方便有需要的朋友,降低 PostgreSQL 的上手門檻。
中文社區(qū)網(wǎng)站?
- PostgreSQL 中文社區(qū)官網(wǎng):??http://postgres.cn/index.php/home
官方手冊(cè)中文版
- PostgreSQL 中文手冊(cè):? ?http://postgres.cn/document
推薦書籍( 中文 )
- PostgreSQL服務(wù)器編程
- PostgreSQL修煉之道:從小工到專家
- PostgreSQL即學(xué)即用(第2版)
- 數(shù)據(jù)架構(gòu)師的PostgreSQL修煉:高效設(shè)計(jì)、開發(fā)與維護(hù)數(shù)據(jù)庫(kù)應(yīng)用
- PostgreSQL 9 Administration Cookbook(第2版)
技術(shù)博客
- 德哥:??????http://blog.163.com/digoal@126/
- 譚峰(francs):????http://francs3.blog.163.com/
- 陳立群(kenyon):???http://my.oschina.net/Kenyon
- 唐成(osdba):????http://blog.osdba.net/
- 那海藍(lán)藍(lán):??????http://blog.163.com/li_hx/
- 有理想的豬:????http://my.oschina.net/quanzl/blog
- 大肚熊:????????http://www.cnblogs.com/daduxiong/category/257029.html
- Stephen_Liu:???http://www.cnblogs.com/stephen-liu74/
- David_Tang:????http://www.cnblogs.com/mchina/tag/postgresql/
- beigang:?????? ???http://blog.csdn.net/beiigang
視頻教程
PostgreSQL 培訓(xùn)視頻教程(德哥):?http://www.tudou.com/home/digoal
總結(jié)
以上是生活随笔為你收集整理的postgresql 安装使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c++ Oracle OCCI 编程
- 下一篇: Java 内部类 和 匿名内部类