Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So installieren und verwenden Sie PostgreSQL und PostGIS unter Linux

So installieren und verwenden Sie PostgreSQL und PostGIS unter Linux

小云云
小云云Original
2018-02-07 09:30:092609Durchsuche

Dieser Artikel stellt hauptsächlich die Installation und Verwendung von PostgreSQL und PostGIS unter Linux vor und analysiert und erklärt die Punkte, auf die man achten muss. Ich hoffe, dass er allen helfen kann.

PostgreSQL und PostGIS installieren

PostgreSQL und PostGIS sind bereits beliebte Open-Source-Projekte und wurden in die Yum- oder Apt-Pakete der wichtigsten Linux-Distributionen aufgenommen. Für Ubuntu installieren Sie beispielsweise einfach die folgenden Pakete:


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

Für die RedHat-Serie installieren Sie bitte:


$ sudo yum install postgresql-server postgresql postgis

Nach der Erstinstallation werden standardmäßig eine Datenbank namens postgres und ein Datenbankbenutzer namens postgres generiert. Hierbei ist zu beachten, dass auch ein Linux-Systembenutzer namens postgres generiert wird. Wenn wir in Zukunft PostgreSQL betreiben, sollten wir dies in diesem neu erstellten Postgres-Benutzer tun.

PostgreSQL-Konfiguration

Wenn Sie vom Quellcode installieren

Es wird nicht empfohlen, vom Quellcode zu installieren. Ich habe versucht, von der Quelle zu installieren Code ist zu mühsam und verschiedene Make-Installationen sind fehleranfällig. Schließlich habe ich es mit rpm installiert. Aber da ich einige Zeit mit der Recherche verbracht habe und es erfolgreich installiert habe, werde ich es aufzeichnen – es können jedoch Fehler auftreten. Wenn Leser also die Installation vom Quellcode aus durchführen möchten, seien Sie bitte bereit, ein Rollback durchzuführen.

Wenn Sie die Quellkompilierung verwenden und die Installation durchführen, erfordert dieser Abschnitt eine zusätzliche Konfiguration.

Es scheint, dass die Installation der CentOS-Serie auch erfordert...

Nach der Standard-Make-Installation lautet das PostgreSQL-Installationsverzeichnis: /usr/local/pgsql/

Zunächst müssen Sie gemäß Zur Referenz in diesem Link die Umgebungsvariablen


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

konfigurieren. Nach dem Ausführen von pg_ctl starten Sie jedoch Es wird ein Fehler angezeigt:


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

In diesem Fall müssen Sie die Schritte in der offiziellen PostGreSQL-Dokumentation befolgen, um eine echte Datenbank zu erstellen: 076402276aae5dbec7f672f8f4e5cc81

PostgreSQL: Dokumentation: 9.1: Erstellen eines Datenbankclusters

Erstellen Sie zuerst ein Benutzerkonto mit dem Namen postgres


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

Dann Geben Sie dieses Konto ein und erstellen Sie eine Datenbank


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

Zu diesem Zeitpunkt gibt die Shell Folgendes aus:


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

Herzlichen Glückwunsch, Sie können PostgreSQL als nächstes starten:


pg_ctl -D /usr/local/pgsql/database/ -l /usr/local/pgsql/database/psql.log start

Nachdem PostgreSQL installiert ist,

geben Sie das Postgres-Konto ein und rufen Sie die PostgreSQL-Konsole auf:


$ sudo su postgres
$ psql

Dies entspricht: Der Systembenutzer postgres meldet sich als Datenbankbenutzer mit demselben Namen bei der Datenbank an. Ansonsten müssen wir den Benutzer jedes Mal in den Parametern angeben Wir führen psql aus, was man leicht vergisst.

Legen Sie ein Passwort in psql fest – es ist zu beachten, dass das hier festgelegte Passwort nicht das Passwort des Postgres-Systemkontos ist, sondern das Benutzerpasswort in der Datenbank:


postgres=# \password postgres

Dann geben Sie einfach nach Aufforderung das Passwort ein.

PostGIS aus dem Quellcode installieren

Wenn Sie PostgreSQL aus dem Quellcode installieren möchten, müssen Sie zunächst feststellen, welche Version von PostgreSQL Sie installiert haben

Dann Gehen Sie zu PostGIS. Gehen Sie zur Webseite, um zu überprüfen, welcher Version von PostGIS sie entspricht.

Laden Sie abschließend die entsprechende Quelle entsprechend der PostGIS-Version herunter

Der endgültige Import ist sehr mühsam. Der Autor bleibt bei diesem Schritt hängen, daher habe ich die Installation vom Quellcode endgültig aufgegeben. .

PostGIS-Erweiterung importieren

Je nach verschiedenen Versionen von Postgresql und Postgis unterscheidet sich der Pfad geringfügig, hauptsächlich weil der Pfad Versionsinformationen enthält:


$ 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

Im obigen Vorgang wurde eine leere Datenbank namens „template_postgis“ erstellt. Diese Datenbank ist leer und gehört dem Postgres-Benutzer. Achten Sie darauf, dieser Datenbank keine Daten hinzuzufügen. Der Grund, warum diese Datenbank als „Vorlage“ bezeichnet wird, bedeutet, dass sie zur Ableitung verwendet wird.

Der entsprechende PostGIS-Pfad kann anders sein. Wenn dies fehlschlägt, versuchen Sie es mit dem oben genannten Pfad und suchen Sie nach einigen .sql-Dateien, die Sie ausprobieren können.

.shp-Datei in eine PostGIS-Datenbank konvertieren

.shp-in eine .sql-Datei konvertieren

Suchen Sie zunächst die Datei, die konvertiert werden muss, sofern dies der Fall ist Es muss konvertiert werden. Die .shp-Datei lautet: /tmp/demo.shp. Gehen Sie dann wie folgt vor:


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

Hier müssen wir jeweils die Bedeutung erklären Teil des letzten Satzes:

  • -W GBK: Wenn Ihre .shp-Datei chinesische Schriftzeichen enthält, fügen Sie bitte diese Option hinzu

  • -s 3857 : Geben Sie das Referenzkoordinatensystem der Datei an. Meine .shp-Datei verwendet EPSG:3857

  • ./demo.shp: Der Pfad der .shp-Datei

  • Eintrag: zeigt an, dass Sie möchte den Namen der importierten Datenbanktabelle – vorausgesetzt, dass diese .shp-Datei jeden Eintrag darstellt, also habe ich ihn „Eintrag“ genannt

  • demo.sql

Nachdem Sie die .sql-Datei erhalten haben, können Sie sie direkt in die PostgreSQL-Datenbank importieren.

Erstellen Sie eine PostGIS-Datenbank

Hier müssen Sie die vorherige Vorlage verwenden.


sudo su postgres
psql
CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;
  • newdb: neuer Datenbankname

  • originaldb: das ist das vorherige 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 = '*'

相关推荐:

Python连接PostgreSQL数据库的方法

PHP连接不上PostgreSQL的问题

PHP 读取Postgresql中的数组_PHP教程

Das obige ist der detaillierte Inhalt vonSo installieren und verwenden Sie PostgreSQL und PostGIS unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn