成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Linux PostgreSQL 和 PostGIS 安裝和使用

shixinzhang / 2755人閱讀

摘要:最近研究基于的開源框架,其中構(gòu)建需要使用插件。為例,安裝以下包即可系列則請安裝初次安裝后,默認生成一個名為的數(shù)據(jù)庫和一個名為的數(shù)據(jù)庫用戶。注意,不要往這個數(shù)據(jù)庫中添加數(shù)據(jù),這個數(shù)據(jù)庫之所以稱為模板,就說明它是用來派生用的。

最近研究基于 GeoServer 的開源 GIS 框架,其中構(gòu)建 GIS database 需要使用 PostgreSQL + PostGIS 插件?;诵r間學習,這里記錄一下。如有錯誤,感謝不吝指正~~

本文地址:https://segmentfault.com/a/1190000013141990

參考資料

PostgreSQL新手入門

Why does PostGIS installation not create a template_postgis?

PostGIS安裝與SHP數(shù)據(jù)入庫(兩種方法)

Linux環(huán)境下源碼安裝PostgreSQL+PostGIS

Create PostGIS template——這里主要是說明了,需要創(chuàng)建的幾個 key:geometry_columns、geography_columns、spatial_ref_sys

“psql: could not connect to server: Connection refused” Error when connecting to remote database

安裝 PostgreSQL 和 PostGIS

PostgreSQL 和 PostGIS 已經(jīng)是熱門的開源工程,已經(jīng)收錄在各大 Linux 發(fā)行版的 yum 或 apt 包中。Ubuntu 為例,安裝以下包即可:

$ sudo apt-get install postgresql-client postgresql postgis -y

RedHat 系列則請安裝:

$ sudo yum install postgresql-server postgresql postgis

初次安裝后,默認生成一個名為 postgres 的數(shù)據(jù)庫和一個名為 postgres 的數(shù)據(jù)庫用戶。這里需要注意的是,同時還生成了一個名為 postgres 的 Linux 系統(tǒng)用戶。我們以后在操作 PostgreSQL 的時候都應該在這個新創(chuàng)建的 postgres 用戶中進行。

PostgreSQL 配置 如果是從源碼安裝

不建議從源碼安裝,我曾經(jīng)試過從源碼安裝,實在是太麻煩了,而且各種 make install 容易出錯。最后我還是用 rpm 安裝了。不過既然花了些時間研究并且我成功安裝過,所以還是記錄一下吧——不過,可能有錯漏,所以讀者如果要從源碼安裝的話,請做好回滾的準備。

如果使用的是通過 source 編譯并且 make install 安裝,那么這一節(jié)是需要額外配置的。
貌似 CentOS 系列的安裝也需要……

默認的 make install 之后,PostgreSQL 安裝目錄在:/usr/local/pgsql/

首先根據(jù)這個鏈接的參考,需要配置環(huán)境變量

$ set $PGDATA = "/usr/local/pgsql/database"

但是執(zhí)行了 pg_ctl start 之后,會出現(xiàn)錯誤:

pg_ctl: directory "/usr/local/pgsql/database" is not a database cluster directory

這樣的話,就需要參照 PostGreSQL 官方文檔的步驟創(chuàng)建真正的 database:
PostgreSQL: Documentation: 9.1: Creating a Database Cluster

首先創(chuàng)建一個用戶賬戶,名叫 postgres

$ usradd postgres
$ sudo chown postgres /usr/local/pgsql/database

然后進入這個賬戶,創(chuàng)建 database

$ sudo su postgres
$ initdb -D /usr/local/pgsql/database/

此時 shell 會輸出:

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 "C".
The default database encoding has accordingly been set to "SQL_ASCII".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /usr/local/pgsql/database ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
creating template1 database in /usr/local/pgsql/database/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects" descriptions ... ok
creating collations ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
loading PL/pgSQL server-side language ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok
syncing data to disk ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    pg_ctl -D /usr/local/pgsql/database/ -l logfile start

恭喜你,接下來就可以啟動 PostgreSQL 了:

pg_ctl -D /usr/local/pgsql/database/ -l /usr/local/pgsql/database/psql.log start
PostgreSQL 安裝好后

進入 postgres 賬戶,并且進入 PostgreSQL 控制臺:

$ sudo su postgres
$ psql

這時相當于系統(tǒng)用戶 postgres 以同名數(shù)據(jù)庫用戶的身份,登錄數(shù)據(jù)庫,否則我們每次執(zhí)行 psql 的時候都要在參數(shù)中指定用戶,容易忘。

psql 中設(shè)置一下密碼——需要注意的是,這里設(shè)置的密碼并不是 postgres 系統(tǒng)帳戶的密碼,而是在數(shù)據(jù)庫中的用戶密碼:

postgres=# password postgres

然后按照提示輸入密碼就好。

從源碼安裝 PostGIS

如果選擇了從源碼安裝 PostgreSQL 的話,那么首先需要判斷你安裝的 PostgreSQL 是什么版本

然后,再到 PostGIS 的網(wǎng)頁上去查其對應的是 PostGIS 的哪個版本。

最后,按照 PostGIS 的版本去下載對應的 source

最后的導入很麻煩,筆者就是卡在這一步,所以才最終放棄從源碼安裝的……

導入 PostGIS 擴展

根據(jù) postgresql 和 postgis 的版本不同,路徑會有些差異,主要是路徑中包含版本信息:

$ sudo su postgres
$ createdb template_postgis
$ createlang plpgsql template_postgis
$ psql -d template_postgis -f /usr/share/postgresql/9.5/contrib/postgis-2.2/postgis.sql
$ psql -d template_postgis -f /usr/share/postgresql/9.5/contrib/postgis-2.2/spatial_ref_sys.sql

上面的操作中,創(chuàng)建了一個叫做 “template_postgis” 的空數(shù)據(jù)庫。這個數(shù)據(jù)庫是空的,并且屬于 postgres 用戶。注意,不要往這個數(shù)據(jù)庫中添加數(shù)據(jù),這個數(shù)據(jù)庫之所以稱為 “模板”(template),就說明它是用來派生用的。

相應的 PostGIS 路徑可能不同,如果失敗,就在上面的路徑附近多嘗試一下,找?guī)讉€ .sql 文件試試看。

轉(zhuǎn)換 .shp 文件到 PostGIS 數(shù)據(jù)庫中 轉(zhuǎn)換 .shp.sql 文件

首先找到需要轉(zhuǎn)換的文件,假設(shè)需要轉(zhuǎn)換的 .shp 文件是:/tmp/demo.shp,那么就做以下操作:

$ sudo su postgres
$ cd /tmp
$ shp2pgsql -W GBK -s 3857 ./demo.shp entry > demo.sql

這里需要說明一下最后一句各部分所代表的含義:

-W GBK:如果你的 .shp 文件包含中文字符,那么請加上這個選項

-s 3857:指明文件的參考坐標系統(tǒng)。我的 .shp 文件使用的是 EPSG:3857

./demo.shp:.shp 文件的路徑

entry:表示要導入的數(shù)據(jù)庫表名——假設(shè)這個 .shp 文件表示的是各個入口,所以我命名為 “entry”

demo.sql

得到了 .sql 文件后,就可以直接導入到 PostgreSQL 數(shù)據(jù)庫了。

創(chuàng)建一個 PostGIS 數(shù)據(jù)庫

這里就需要用到前面的 template 了。

sudo su postgres
psql
CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;

newdb: 新的數(shù)據(jù)庫名

originaldb:也就是前面的 template_postgis

dbuser:你的賬戶名,我一般使用 postgres

導入 .sql 文件
sudo su postgres
psql
c newdb
i demo.sql
d

可以看到,.sql 文件已經(jīng)被導入了。

設(shè)置數(shù)據(jù)庫權(quán)限

OK,現(xiàn)在我們在本機(服務器 IP 假設(shè)是 192.168.1.111)用以下命令登錄 psql,會發(fā)現(xiàn)一段輸出:

$ psql -h 192.168.1.111 -p 5432
psql: could not connect to server: Connection refused
        Is the server running on host "100.94.110.105" and accepting
        TCP/IP connections on port 5432?

這是因為 PostgreSQL 默認不對外開放權(quán)限,只對監(jiān)聽環(huán)回地址。要修改的話,需要找到 postgresql.conf 文件,修改值 listen_addresses

listen_addresses = "*"


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/38983.html

相關(guān)文章

  • Linux PostgreSQL PostGIS 安裝使用

    摘要:最近研究基于的開源框架,其中構(gòu)建需要使用插件。為例,安裝以下包即可系列則請安裝初次安裝后,默認生成一個名為的數(shù)據(jù)庫和一個名為的數(shù)據(jù)庫用戶。注意,不要往這個數(shù)據(jù)庫中添加數(shù)據(jù),這個數(shù)據(jù)庫之所以稱為模板,就說明它是用來派生用的。 最近研究基于 GeoServer 的開源 GIS 框架,其中構(gòu)建 GIS database 需要使用 PostgreSQL + PostGIS 插件?;诵r間學習...

    dreamans 評論0 收藏0
  • 新書推薦 |《PostgreSQL實戰(zhàn)》出版(提供樣章下載)

    摘要:作者譚峰張文升出版日期年月頁數(shù)頁定價元本書特色中國開源軟件推進聯(lián)盟分會特聘專家撰寫,國內(nèi)多位開源數(shù)據(jù)庫專家鼎力推薦。張文升中國開源軟件推進聯(lián)盟分會核心成員之一。 很高興《PostgreSQL實戰(zhàn)》一書終于出版,本書大體上系統(tǒng)總結(jié)了筆者 PostgreSQL DBA 職業(yè)生涯的經(jīng)驗總結(jié),本書的另一位作者張文升擁有豐富的PostgreSQL運維經(jīng)驗,目前就職于探探科技任首席PostgreS...

    Martin91 評論0 收藏0
  • title: postGreSQL 插件 timescaleDB 安裝使用 date: 2019-0

    摘要:基本環(huán)境操作系統(tǒng)安裝安裝和安裝時序數(shù)據(jù)庫插件部署實踐時空數(shù)據(jù)庫德哥官網(wǎng)安裝文檔設(shè)置實驗下載測試數(shù)據(jù)創(chuàng)建數(shù)據(jù)庫解壓下載文件創(chuàng)建表結(jié)構(gòu)導入數(shù)據(jù)查詢測試注釋數(shù)據(jù)庫啟動連接數(shù)據(jù)庫創(chuàng) 基本環(huán)境 操作系統(tǒng): centOS 7 postGreSQL : 10 timescaleDB : 1.0 + postGreSQL安裝 Centos7 安裝Postgresql10.5和PostGIS times...

    Kylin_Mountain 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<