postgresql 安装使用
PostgreSQL 中文社區在線文檔:http://www.postgres.cn/document? ? ? ??http://shouce.jb51.net/postgresql/
PostgreSQL 英文官網:https://www.postgresql.org/docs/
知乎 -?PostgreSQL 與 MySQL 相比,優勢何在?:https://www.zhihu.com/question/20010554
阿里云大學 - PostgreSQL數據庫從入門到精通
易百 - PostgreSQL教程:http://www.yiibai.com/postgresql/
PostgreSQL 是以加州大學伯克利分校計算機系開發的 POSTGRES 版本 4.2 為基礎的對象關系型數據庫管理系統(ORDBMS),簡稱 pgsql,PostgreSQL支持大部分 SQL標準并且提供了許多其他現代特性:復雜查詢、外鍵、觸發器、視圖、事務完整性、MVCC(多版本并發控制)。同樣,PostgreSQL 可以用許多方法擴展,比如,通過增加新的數據類型、函數、操作符、聚集函數、索引、方法、過程語言,并且因為許可證的靈活,任何人都可以以任何目的免費使用,修改,和分發 PostgreSQL, 不管是私用,商用,還是學術研究使用。
1. 安裝
首先,安裝PostgreSQL客戶端。
sudo apt-get install postgresql-client然后,安裝PostgreSQL服務器。 第一步:安裝 運行命令:sudo apt-get install postgresql -y第二步:安全設置 安裝 postgresql 之后系統會自動創建一個空密碼的 Linux 的用戶 postgres,現在為 postgres 用戶添加密碼 (cat /etc/passwd | grep post ) sudo passwd postgres第三步:連接數據庫 systemctl start postgresql // 啟動 postgresql 服務 su - postgresqlc // 切換到 postgresql 用戶 psql postgres 第四步:查看幫助 postgres=# help
如果在 root 用戶下執行 psql 時,會報錯。報錯如下:可以看到我 Linux 中的 root 用戶和 king 用戶 在 psql 中角色都不存在
在PostgreSQL 里沒有區分用戶和角色的概念,"CREATE USER" 為 "CREATE ROLE" 的別名,這兩個命令幾乎是完全相同的,唯一的區別是"CREATE USER" 命令創建的用戶默認帶有LOGIN屬性,而"CREATE ROLE" 命令創建的用戶默認不帶LOGIN屬性(CREATE USER is equivalent to CREATE ROLE except that CREATE USER assumes LOGIN by default, while CREATE ROLE does not)。現在在 postgresql 中創建一個名為 root的角色(Postgresql 的超級用戶是 postgres):
( *******?注意:語句后面的分號? ; 不能省略?********** )
正常情況下,安裝完成后,PostgreSQL服務器會自動在本機的5432端口開啟。
如果還想安裝圖形管理界面,可以運行下面命令。(pgadmin3 是一個設計,維護和管理 Postgres 數據庫用的通用工具) sudo apt-get install pgadmin3連接不成功要注意的地方:注意服務器的防火墻規則、修改服務器連接監聽 ( postgersql.conf 配置文件 )、修改連接認真方式 ( pg_hba.conf 配置文件 )。
http://www.jianshu.com/p/3a1bcd7973db
2. 添加新用戶和新數據庫
PostgreSQL 安裝后,默認生成一個名為 postgres 的數據庫 和 一個名為 postgres 的數據庫用戶。這里需要注意的是,同時還生成了一個名為 postgres 的 Linux 系統用戶,并且屬于 postgres 用戶組(可以 su - postgres ,然后執行 groups 命令,可以看到 屬于 postgres 組)。
下面,我們使用 postgres 用戶,來生成其他用戶和新數據庫。好幾種方法可以達到這個目的,
這里介紹兩種。一是先進入psql環境,即使用 PostgreSQL控制臺,然后再連接數據庫。二是直接在系統shell下執行psql命令。
下面分別給出實例:
第一種方法,使用PostgreSQL控制臺。
首先,新建一個Linux新用戶,可以取你想要的名字,這里為dbuser。命令:sudo adduser dbuser
然后,切換到postgres用戶。命令:sudo su - postgres
下一步,使用psql命令登錄PostgreSQL控制臺。命令:psql
這時相當于系統用戶postgres以同名數據庫用戶的身份,登錄數據庫,這時不用輸入密碼(默認創建的 postgres 用戶沒有密碼)
如果一切正常,系統提示符會變為"postgres=#",表示這時已經進入了數據庫控制臺。以下的命令都在控制臺內完成。
第二種方法,使用shell命令行。
添加新用戶和新數據庫,除了在PostgreSQL控制臺內,還可以在shell命令行下完成。這是因為PostgreSQL提供了命令行程序createuser和createdb。
還是以新建用戶dbuser和數據庫exampledb為例。
首先,創建數據庫用戶dbuser,并指定其為超級用戶。命令:sudo -u postgres createuser --superuser dbuser
然后,登錄數據庫控制臺,設置dbuser用戶的密碼,完成后退出控制臺。
sudo -u postgres psql
\password dbuser
\q
接著,在shell命令行下,創建數據庫exampledb,并指定所有者為dbuser。命令:sudo -u postgres createdb -O dbuser exampledb
3. 登錄數據庫
添加新用戶和新數據庫以后,就要以新用戶的名義登錄數據庫,這時使用的是psql命令。
psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432
上面命令的參數含義如下:-U指定用戶,-d指定數據庫,-h指定服務器,-p指定端口。
輸入上面命令以后,系統會提示輸入dbuser用戶的密碼。輸入正確,就可以登錄控制臺了。
psql命令存在簡寫形式。如果當前Linux系統用戶,同時也是PostgreSQL用戶,則可以省略用戶名(-U參數的部分)。
舉例來說,我的Linux系統用戶名為ruanyf,且PostgreSQL數據庫存在同名用戶,則我以ruanyf身份登錄Linux系統后,可以直接使用下面的命令登錄數據庫,且不需要密碼。
psql exampledb
此時,如果PostgreSQL內部還存在與當前系統用戶同名的數據庫,則連數據庫名都可以省略。比如,假定存在一個叫做ruanyf的數據庫,則直接鍵入psql就可以登錄該數據庫。
psql
另外,如果要恢復外部數據,可以使用下面的命令。
psql exampledb < exampledb.sql
4. 控制臺命令
除了前面已經用到的\password命令(設置密碼)和\q命令(退出)以外,控制臺還提供一系列其他命令。
常用命令
(1)列出所有的數據庫mysql: show databasespsql: \l或\list (2)切換數據庫mysql: use dbnamepsql: \c dbname (3)列出當前數據庫下的數據表mysql: show tablespsql: \dt 或者 \d (4)列出指定表的所有字段mysql: show columns from table namepsql: \d tablename (5)查看指定表的基本情況mysql: describe tablenamepsql: \dt tablename 或者 \d 表名 (6)退出登錄mysql: quit 或者\qpsql:\q查看某個庫中某個表的記錄:select * from apps limit 1; 顯示字符集:\encoding配置postgresql
[root@rudder data]# mkdir -p /var/lib/pgsql/data //創建pgsql的數據庫目錄 [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 //初始化數據庫 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: //超級管理員密碼 Enter it again: //確認密碼 initdb: removing contents of data directory "/var/lib/pgsql/data" 這樣就初始化就好了。修改/var/lib/pgsql/data/postgresql.conf listen_addresses = '*' //監聽所有ip的連接,默認是本機 port = 5432 //這個不開也行,默認就是5432端口pgsql是命令行的管理工具,但是開發時肯定要用pgadmin遠程連接。所以權限是要放大,listen_addresses = '*' 全部放開,當然也可以,設置局域網的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和用戶,密碼對都可以連接 # IPv6 local connections: host all all ::1/128 md5 啟動并查看
[root@rudder data]# /etc/init.d/postgresql start //啟動 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 //出現這個才算成功,第一次操作沒成功,pgadmin連不上 postgres-# \q //退出
5. 數據庫操作
基本的數據庫操作,就是使用一般的SQL語言。
? ? ? ? ? 開源數據庫 PostgreSQL 中文資料非常缺乏,很多社區朋友苦于上手的中文資料少,因此匯總收集以下 PostgreSQL 中文資料,包括 PostgreSQL 中文手冊,中文書籍,技術博客,培訓視頻和歷屆 PostgreSQL 大會材料。希望這些中文資料能夠方便有需要的朋友,降低 PostgreSQL 的上手門檻。
中文社區網站?
- PostgreSQL 中文社區官網:??http://postgres.cn/index.php/home
官方手冊中文版
- PostgreSQL 中文手冊:? ?http://postgres.cn/document
推薦書籍( 中文 )
- PostgreSQL服務器編程
- PostgreSQL修煉之道:從小工到專家
- PostgreSQL即學即用(第2版)
- 數據架構師的PostgreSQL修煉:高效設計、開發與維護數據庫應用
- PostgreSQL 9 Administration Cookbook(第2版)
技術博客
- 德哥:??????http://blog.163.com/digoal@126/
- 譚峰(francs):????http://francs3.blog.163.com/
- 陳立群(kenyon):???http://my.oschina.net/Kenyon
- 唐成(osdba):????http://blog.osdba.net/
- 那海藍藍:??????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 培訓視頻教程(德哥):?http://www.tudou.com/home/digoal
總結
以上是生活随笔為你收集整理的postgresql 安装使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ Oracle OCCI 编程
- 下一篇: scrapy-redis 使 redis