本文主要和大家介紹Linux中PostgreSQL和PostGIS的安裝和使用,並把需要注意點做了分析和解釋,需要的朋友學習下,希望能幫助到大家。
安裝 PostgreSQL 和 PostGIS
PostgreSQL 和 PostGIS 已經是熱門的開源工程,已經收錄在各大 Linux 發行版的 yum 或 apt 套件中。 Ubuntu 為例,安裝以下套件即可:
$ sudo apt-get install postgresql-client postgresql postgis -y
RedHat 系列則請安裝:
$ sudo yum install postgresql-server postgresql postgis
初次安裝後,預設產生一個名為postgres 的資料庫和一個名為postgres 的資料庫使用者。這裡要注意的是,同時也產生了一個名為 postgres 的 Linux 系統使用者。我們以後在操作 PostgreSQL 的時候都應該在這個新建立的 postgres 使用者中進行。
PostgreSQL 設定
如果是從原始碼安裝
#不建議從原始碼安裝,我曾經試過從原始碼安裝,實在是太麻煩了,而且各種make install 容易出錯。最後我還是用 rpm 安裝了。不過既然花了些時間研究並且我成功安裝過,所以還是記錄一下吧——不過,可能有錯漏,所以讀者如果要從源碼安裝的話,請做好回滾的準備。
如果使用的是透過 source 編譯並且 make install 安裝,那麼這一節是需要額外設定的。
看起來像CentOS 系列的安裝也需要…
預設的make install 之後,PostgreSQL 安裝目錄在:/usr/local/pgsql/
首先根據這個連結的參考,需要配置環境變數
$ set $PGDATA = "/usr/local/pgsql/database"
但是執行了pg_ctl start 之後,會出現錯誤:
pg_ctl: directory "/usr/local/pgsql/database" is not a database cluster directory
這樣的話,就需要參考PostGreSQL 官方文件的步驟來建立真正的database:
PostgreSQL: Documentation: 9.1: Creating a Database Cluster
首先建立一個使用者帳戶,名叫postgres
$ usradd postgres $ sudo chown postgres /usr/local/pgsql/database
然後進入這個帳戶,建立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
這時相當於系統使用者postgres 以同名資料庫使用者的身份,登入資料庫,否則我們每次執行psql 的時候都要在參數中指定用戶,容易忘。
在psql 中設定一下密碼-需要注意的是,這裡設定的密碼並不是postgres 系統帳號的密碼,而是在資料庫中的使用者密碼:
postgres=# \password postgres
然後按照提示輸入密碼就好。
從原始碼安裝PostGIS
如果選擇了從原始碼安裝PostgreSQL 的話,那麼首先需要判斷你安裝的PostgreSQL 是什麼版本
#然後,再到PostGIS的網頁上去查其對應的是PostGIS 的哪個版本。
最後,按照PostGIS 的版本去下載對應的source
最後的導入很麻煩,筆者就是卡在這一步,所以才最終放棄從源碼安裝的…
匯入PostGIS 擴充功能
根據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上面的操作中,建立了一個叫做「template_postgis」 的空資料庫。這個資料庫是空的,並且屬於 postgres 使用者。注意,不要往這個資料庫中新增數據,這個資料庫之所以稱為 「模板」(template),就說明它是用來派生用的。 對應的 PostGIS 路徑可能不同,如果失敗,就在上面的路徑附近多嘗試一下,找幾個 .sql 檔案試試看。 轉換.shp 檔案到PostGIS 資料庫中
#
$ sudo su postgres $ cd /tmp $ shp2pgsql -W GBK -s 3857 ./demo.shp entry > demo.sql這裡需要說明一下最後一句各部分所代表的含義:
- -W GBK:如果你的.shp 檔案包含中文字符,那麼請加上這個選項
- -s 3857:指明檔案的參考座標系統。我的.shp 檔案使用的是EPSG:3857
- ./demo.shp:.shp 檔案的路徑
- entry:表示要導入的資料庫表名-假設這個.shp 檔案表示的是各個入口,所以我命名為「entry」
- demo.sql
sudo su postgres psql CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;
- newdb: 新的資料庫名稱
- originaldb:也就是前面的 template_postgis
dbuser:你的账户名,我一般使用 postgres
导入 .sql 文件
sudo su postgres psql \c newdb \i demo.sql \d
可以看到,.sql 文件已经被导入了。
设置数据库权限
OK,现在我们在本机(服务器 IP 假设是 192.168.1.111)用以下命令登录 psql,会发现一段输出:
$ 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 默认不对外开放权限,只对监听环回地址。要修改的话,需要找到 postgresql.conf 文件,修改值 listen_addresses:
listen_addresses = '*'
相关推荐:
以上是Linux中PostgreSQL和PostGIS的安裝與使用方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

掌握Linux操作的原因是其廣泛的應用場景和強大的功能。 1)Linux適合開發者、系統管理員和技術愛好者,應用於服務器管理、嵌入式系統和容器化技術。 2)學習Linux可以從文件系統結構、Shell使用、用戶權限管理和進程管理入手。 3)Linux命令行是其核心工具,通過Shell執行命令,如ls、mkdir、cd等,支持重定向和管道操作。 4)高級用法包括編寫自動化腳本,如備份腳本,使用tar命令和條件判斷。 5)常見錯誤包括權限、路徑和語法問題,可通過echo、set-x和$?調試。 6)性能優化建議

Linux系統的五大支柱是:1.內核,2.系統庫,3.Shell,4.文件系統,5.系統工具。內核管理硬件資源並提供基本服務;系統庫為應用程序提供預編譯函數;Shell是用戶與系統交互的接口;文件系統組織和存儲數據;系統工具用於系統管理和維護。

在Linux系統中,可以通過在啟動時按特定鍵或使用命令如“sudosystemctlrescue”進入維護模式。維護模式允許管理員在不受干擾的情況下進行系統維護和故障排除,如修復文件系統、重置密碼、修補安全漏洞等。

Linux初學者應掌握文件管理、用戶管理和網絡配置等基本操作。 1)文件管理:使用mkdir、touch、ls、rm、mv、cp命令。 2)用戶管理:使用useradd、passwd、userdel、usermod命令。 3)網絡配置:使用ifconfig、echo、ufw命令。這些操作是Linux系統管理的基礎,熟練掌握它們可以有效管理系統。

本文解釋瞭如何管理Linux中的Sudo特權,包括授予,撤銷和安全性最佳實踐。關鍵重點是安全和sudoers安全和限制訪問。Character數量:159

本文提供了有關使用Google Authenticator在Linux上設置兩因素身份驗證(2FA)的指南,詳細介紹了安裝,配置和故障排除步驟。它突出了2FA的安全益處,例如增強的SEC

本文討論了使用TOP,HTOP和VMSTAT監視Linux系統性能,並詳細介紹其獨特功能和自定義選項,以進行有效的系統管理。

文章討論了使用APT,YUM和DNF在Linux中管理軟件包,涵蓋安裝,更新和刪除。它比較了它們對不同分佈的功能和適用性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),