日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

postgresql 安装使用

發(fā)布時(shí)間:2024/7/23 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 postgresql 安装使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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ò)展,比如,通過增加新的數(shù)據(jù)類型、函數(shù)、操作符、聚集函數(shù)、索引、方法、過程語言,并且因?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 里沒有區(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):

( *******?注意:語句后面的分號(hào)? ; 不能省略?********** )

在postgresql中創(chuàng)建一個(gè)名為root的角色即可(切換到 postgres 用戶): postgres@debian:~$ createuser root postgres@debian:~$ psql psql (9.3.3) Type "help" for help.postgres=# \du


創(chuàng)建角色 king 并賦予其CREATEDB 的權(quán)限。 postgres=# CREATE ROLE king CREATEDB ; postgres=# \du 創(chuàng)建角色并賦予多個(gè)屬性時(shí)屬性之間要用空格: postgres=# create role king CREATEDB superuser Createrole Replication login; postgres=# \du //要添加的屬性一般要包括如下。直接將postgres所有權(quán)限都給root后,仍報(bào)錯(cuò) google后,由于create role時(shí)不為用戶賦予login權(quán)限,賦予login權(quán)限即可 postgres=# alter user root login;

正常情況下,安裝完成后,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 用戶,來生成其他用戶和新數(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 用戶沒有密碼)
如果一切正常,系統(tǒng)提示符會(huì)變?yōu)?#34;postgres=#",表示這時(shí)已經(jīng)進(jìn)入了數(shù)據(jù)庫(kù)控制臺(tái)。以下的命令都在控制臺(tái)內(nèi)完成。


第一件事:使用\password命令,為postgres用戶設(shè)置一個(gè)密碼。命令:\password postgres 第二件事:創(chuàng)建數(shù)據(jù)庫(kù)用戶dbuser(剛才創(chuàng)建的是Linux系統(tǒng)用戶),并設(shè)置密碼。命令:CREATE USER dbuser WITH PASSWORD 'password'; 第三件事:創(chuàng)建用戶數(shù)據(jù)庫(kù),這里為exampledb,并指定所有者為dbuser。命令:CREATE DATABASE exampledb OWNER dbuser; 第四件事:將exampledb數(shù)據(jù)庫(kù)的所有權(quán)限都賦予dbuser,否則dbuser只能登錄控制臺(tái),沒有任何數(shù)據(jù)庫(kù)操作權(quán)限。命令:GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser; 最后,使用\q命令退出控制臺(tái)(也可以直接按ctrl+D)。命令:\q


第二種方法,使用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ù)的部分)。
舉例來說,我的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)還提供一系列其他命令。

\h:查看SQL命令的解釋,比如\h select。 \?:查看psql命令列表。 \l:列出所有數(shù)據(jù)庫(kù)。 \c [database_name]:連接其他數(shù)據(jù)庫(kù)。 \d:列出當(dāng)前數(shù)據(jù)庫(kù)的所有表格。 \d [table_name]:列出某一張表格的結(jié)構(gòu)。 \du:列出所有用戶。 \e:打開文本編輯器。 \conninfo:列出當(dāng)前數(shù)據(jù)庫(kù)和連接的信息。

常用命令

(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è)才算成功,第一次操作沒成功,pgadmin連不上 postgres-# \q //退出



5. 數(shù)據(jù)庫(kù)操作


基本的數(shù)據(jù)庫(kù)操作,就是使用一般的SQL語言。

# 創(chuàng)建新表 CREATE TABLE user_tbl(name VARCHAR(20), signup_date DATE); # 插入數(shù)據(jù) INSERT INTO user_tbl(name, signup_date) VALUES('張三', '2013-12-22'); # 選擇記錄 SELECT * FROM user_tbl; # 更新數(shù)據(jù) UPDATE user_tbl set name = '李四' WHERE name = '張三'; # 刪除記錄 DELETE FROM user_tbl WHERE name = '李四' ; # 添加欄位 ALTER TABLE user_tbl ADD email VARCHAR(40); # 更新結(jié)構(gòu) ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL; # 更名欄位 ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup; # 刪除欄位 ALTER TABLE user_tbl DROP COLUMN email; # 表格更名 ALTER TABLE user_tbl RENAME TO backup_tbl; # 刪除表格 DROP TABLE IF EXISTS backup_tbl;


? ? ? ? ? 開源數(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
備注:排名不分先后,找到合適的博客再補(bǔ)充。

視頻教程
PostgreSQL 培訓(xùn)視頻教程(德哥):?http://www.tudou.com/home/digoal




總結(jié)

以上是生活随笔為你收集整理的postgresql 安装使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。