Maison >Opération et maintenance >exploitation et maintenance Linux >Comment installer et utiliser PostgreSQL et PostGIS sous Linux

Comment installer et utiliser PostgreSQL et PostGIS sous Linux

小云云
小云云original
2018-02-07 09:30:092649parcourir

Cet article présente principalement l'installation et l'utilisation de PostgreSQL et PostGIS sous Linux, et analyse et explique les points auxquels il faut prêter attention. J'espère que cela pourra aider tout le monde.

Installer PostgreSQL et PostGIS

PostgreSQL et PostGIS sont déjà des projets open source populaires et ont été inclus dans les packages yum ou apt des principales distributions Linux. Pour Ubuntu, par exemple, installez simplement les packages suivants :


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

Pour la série RedHat, veuillez installer :


$ sudo yum install postgresql-server postgresql postgis

Après l'installation initiale, une base de données nommée postgres et un utilisateur de base de données nommé postgres sont générés par défaut. Il convient de noter ici qu'un utilisateur du système Linux nommé postgres est également généré. Lorsque nous utiliserons PostgreSQL à l'avenir, nous devrions le faire dans cet utilisateur Postgres nouvellement créé.

Configuration PostgreSQL

Si vous installez à partir du code source

Il n'est pas recommandé d'installer à partir du code source. J'ai essayé d'installer à partir de la source. C'est trop gênant et diverses installations de Make sont sujettes aux erreurs. Finalement, je l'ai installé en utilisant RPM. Mais comme j'ai passé du temps à faire des recherches et que je l'ai installé avec succès, je vais l'enregistrer. Cependant, il peut y avoir des erreurs, donc si les lecteurs souhaitent installer à partir du code source, soyez prêt à revenir en arrière.

Si vous utilisez la compilation des sources et effectuez l'installation, cette section nécessite une configuration supplémentaire.

Il semble que l'installation de la série CentOS nécessite également...

Après l'installation par défaut de make, le répertoire d'installation de PostgreSQL est : /usr/local/pgsql/

Tout d'abord, selon Pour référence dans ce lien, vous devez configurer les variables d'environnement


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

Cependant, après avoir exécuté pg_ctl start, un. Une erreur apparaîtra :


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

Dans ce cas, vous devez suivre les étapes de la documentation officielle PostGreSQL pour créer une vraie base de données : 076402276aae5dbec7f672f8f4e5cc81

PostgreSQL : Documentation : 9.1 : Création d'un cluster de base de données

Créez d'abord un compte utilisateur nommé postgres


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

Ensuite entrez ce compte et créez une base de données


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

À ce moment, le shell affichera :


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

Félicitations, vous pouvez ensuite démarrer PostgreSQL :


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

Une fois PostgreSQL installé,

entrez le compte postgres et accédez à la console PostgreSQL :


$ sudo su postgres
$ psql

Cela équivaut à L'utilisateur système postgres se connecte à la base de données en tant qu'utilisateur de base de données avec le même nom. Sinon, nous devons spécifier l'utilisateur dans les paramètres à chaque fois. nous exécutons psql, ce qui est facile à oublier.

Définissez un mot de passe dans psql - il convient de noter que le mot de passe défini ici n'est pas le mot de passe du compte système postgres, mais le mot de passe de l'utilisateur dans la base de données :


postgres=# \password postgres

Ensuite, entrez simplement le mot de passe lorsque vous y êtes invité.

Installer PostGIS à partir du code source

Si vous choisissez d'installer PostgreSQL à partir du code source, vous devez d'abord déterminer quelle version de PostgreSQL vous avez installée

Ensuite, aller sur PostGIS Accédez à la page Web pour vérifier à quelle version de PostGIS elle correspond.

Enfin, téléchargez la source correspondante selon la version de PostGIS

L'import final est très fastidieux L'auteur est bloqué à cette étape, j'ai donc finalement abandonné l'installation à partir du code source.. .

Importer l'extension PostGIS

Selon les différentes versions de postgresql et postgis, le chemin sera légèrement différent, principalement parce que le chemin contient des informations de version :


$ 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

Dans l'opération ci-dessus, une base de données vide appelée "template_postgis" a été créée. Cette base de données est vide et appartient à l'utilisateur postgres. Faites attention à ne pas ajouter de données à cette base de données. La raison pour laquelle cette base de données est appelée « modèle » signifie qu'elle est utilisée pour la dérivation.

Le chemin PostGIS correspondant peut être différent. S'il échoue, essayez plus près du chemin ci-dessus et trouvez quelques fichiers .sql à essayer.

Convertir le fichier .shp en base de données PostGIS

Convertir .shp en fichier .sql

Recherchez d'abord le fichier qui doit être converti, en supposant que il doit être converti. Le fichier .shp est : /tmp/demo.shp, puis procédez comme suit :


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

Ici, nous devons expliquer la signification de chacun partie de la dernière phrase :

  • -W GBK : Si votre fichier .shp contient des caractères chinois, veuillez ajouter cette option

  • -s 3857 : Spécifiez le système de coordonnées de référence du fichier. Mon fichier .shp utilise EPSG:3857

  • ./demo.shp : Le chemin du fichier .shp

  • entrée : indique que vous je veux le nom de la table de base de données importée - en supposant que ce fichier .shp représente chaque entrée, je l'ai donc nommé "entrée"

  • demo.sql

Après avoir obtenu le fichier .sql, vous pouvez l'importer directement dans la base de données PostgreSQL.

Créer une base de données PostGIS

Ici, vous devez utiliser le modèle précédent.


sudo su postgres
psql
CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;
  • newdb : nouveau nom de base de données

  • originaldb : qui est le précédent 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教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn