Jak zainstalować bazę danych PostgreSQL na Centos 7?
Zainstaluj bazę danych PostgreSQL na Centos 7
Cel
PostgreSQL jest jedną z najbardziej znanych baz danych na świecie. Prosta obsługa i podejście open source są głównymi elementami przemawiającymi za popularnością rozwiązania. Aby dowiedzieć się więcej o możliwościach PostgreSQL, sprawdź oficjalną dokumentację.
Z tego tutoriala dowiesz się, jak zainstalować bazę danych PostgreSQL na dystrybucji Linuksa Centos 7.
Wymagania
W tym tutorialu przyjmujemy, że posiadasz instancję Compute w ramach Public Cloud, serwer VPS lub serwer Bare Metal z systemem Centos 7 oraz podstawowe umiejętności w zakresie wierszy poleceń. Na potrzeby tego tutorialu opieramy się na przykładzie instancji Compute w Public Cloud. Jeśli potrzebujesz pomocy w skonfigurowaniu instancji Public Cloud z systemem CentOS 7, skorzystaj z tego przewodnikaTworzenie pierwszej instancji Public Cloud i łączenie się z nią.
Wskazówki
Dzięki temu tutorialowi zainstalujesz PostgreSQL i utworzysz bazę danych.
Instalacja bazy danych PostgreSQL
W momencie tworzenia tego tutoriala najnowsza wersja PostgreSQL to 14.x. Wszystkie dostępne wersje znajdziesz w sekcji pobierania oficjalnej dokumentacji.
Najpierw upewnij się, czy system jest aktualny:
sudo yum update
Zainstaluj repozytorium RPM:
# Install the repository RPM: sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Wynik wyświetli się w następujący sposób:
$ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm Modules complémentaires chargés : fastestmirror pgdg-redhat-repo-latest.noarch.rpm | 8.1 kB 00:00 Examen de /var/tmp/yum-root-4xEZ6S/pgdg-redhat-repo-latest.noarch.rpm : pgdg-redhat-repo-42.0-24.noarch Sélection de /var/tmp/yum-root-4xEZ6S/pgdg-redhat-repo-latest.noarch.rpm pour installation Résolution des dépendances --> Lancement de la transaction de test ---> Le paquet pgdg-redhat-repo.noarch 0:42.0-24 sera installé --> Résolution des dépendances terminée Dépendances résolues ================================================================================ Package Architecture Version Dépôt Taille ================================================================================ Installation : pgdg-redhat-repo noarch 42.0-24 /pgdg-redhat-repo-latest.noarch 11 k Résumé de la transaction ================================================================================ Installation 1 Paquet Taille totale : 11 k Taille d'installation : 11 k Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installation : pgdg-redhat-repo-42.0-24.noarch 1/1 Vérification : pgdg-redhat-repo-42.0-24.noarch 1/1 Installé : pgdg-redhat-repo.noarch 0:42.0-24 Terminé !
Teraz zainstaluj PostgreSQL:
sudo yum install -y postgresql14-server
$ sudo yum install -y postgresql14-server Modules complémentaires chargés : fastestmirror Loading mirror speeds from cached hostfile * base: centos.mirrors.proxad.net * extras: centos.mirrors.proxad.net * updates: centos.mirrors.proxad.net pgdg-common/7/x86_64/signature | 198 B 00:00 Récupération de la clé à partir de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Importation de la clef GPG 0x442DF0F8 : ID utilisateur : « PostgreSQL RPM Building Project » Empreinte : 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Paquet : pgdg-redhat-repo-42.0-24.noarch (@/pgdg-redhat-repo-latest.noarch) Provient de : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG pgdg-common/7/x86_64/signature | 2.9 kB 00:00 !!! pgdg10/7/x86_64/signature | 198 B 00:00 Récupération de la clé à partir de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Importation de la clef GPG 0x442DF0F8 : ID utilisateur : « PostgreSQL RPM Building Project » Empreinte : 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Paquet : pgdg-redhat-repo-42.0-24.noarch (@/pgdg-redhat-repo-latest.noarch) Provient de : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG pgdg10/7/x86_64/signature | 3.6 kB 00:00 !!! pgdg11/7/x86_64/signature | 198 B 00:00 Récupération de la clé à partir de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Importation de la clef GPG 0x442DF0F8 : ID utilisateur : « PostgreSQL RPM Building Project » Empreinte : 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Paquet : pgdg-redhat-repo-42.0-24.noarch (@/pgdg-redhat-repo-latest.noarch) Provient de : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG pgdg11/7/x86_64/signature | 3.6 kB 00:00 !!! pgdg12/7/x86_64/signature | 198 B 00:00 Récupération de la clé à partir de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Importation de la clef GPG 0x442DF0F8 : ID utilisateur : « PostgreSQL RPM Building Project » Empreinte : 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Paquet : pgdg-redhat-repo-42.0-24.noarch (@/pgdg-redhat-repo-latest.noarch) Provient de : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG pgdg12/7/x86_64/signature | 3.6 kB 00:00 !!! pgdg13/7/x86_64/signature | 198 B 00:00 Récupération de la clé à partir de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Importation de la clef GPG 0x442DF0F8 : ID utilisateur : « PostgreSQL RPM Building Project » Empreinte : 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Paquet : pgdg-redhat-repo-42.0-24.noarch (@/pgdg-redhat-repo-latest.noarch) Provient de : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG pgdg13/7/x86_64/signature | 3.6 kB 00:00 !!! pgdg14/7/x86_64/signature | 198 B 00:00 Récupération de la clé à partir de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Importation de la clef GPG 0x442DF0F8 : ID utilisateur : « PostgreSQL RPM Building Project » Empreinte : 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Paquet : pgdg-redhat-repo-42.0-24.noarch (@/pgdg-redhat-repo-latest.noarch) Provient de : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG pgdg14/7/x86_64/signature | 3.6 kB 00:00 !!! (1/11): pgdg11/7/x86_64/group_gz | 245 B 00:00 (2/11): pgdg10/7/x86_64/group_gz | 245 B 00:00 (3/11): pgdg12/7/x86_64/group_gz | 245 B 00:00 (4/11): pgdg13/7/x86_64/group_gz | 246 B 00:00 (5/11): pgdg-common/7/x86_64/primary_db | 162 kB 00:00 (6/11): pgdg10/7/x86_64/primary_db | 371 kB 00:01 (7/11): pgdg14/7/x86_64/group_gz | 244 B 00:00 (8/11): pgdg11/7/x86_64/primary_db | 400 kB 00:01 (9/11): pgdg14/7/x86_64/primary_db | 98 kB 00:00 (10/11): pgdg12/7/x86_64/primary_db | 277 kB 00:00 (11/11): pgdg13/7/x86_64/primary_db | 181 kB 00:00 Résolution des dépendances --> Lancement de la transaction de test ---> Le paquet postgresql14-server.x86_64 0:14.2-1PGDG.rhel7 sera installé --> Traitement de la dépendance : postgresql14-libs(x86-64) = 14.2-1PGDG.rhel7 pour le paquet : postgresql14-server-14.2-1PGDG.rhel7.x86_64 --> Traitement de la dépendance : postgresql14(x86-64) = 14.2-1PGDG.rhel7 pour le paquet : postgresql14-server-14.2-1PGDG.rhel7.x86_64 --> Traitement de la dépendance : libpq.so.5()(64bit) pour le paquet : postgresql14-server-14.2-1PGDG.rhel7.x86_64 --> Traitement de la dépendance : libicuuc.so.50()(64bit) pour le paquet : postgresql14-server-14.2-1PGDG.rhel7.x86_64 --> Traitement de la dépendance : libicui18n.so.50()(64bit) pour le paquet : postgresql14-server-14.2-1PGDG.rhel7.x86_64 --> Lancement de la transaction de test ---> Le paquet libicu.x86_64 0:50.2-4.el7_7 sera installé ---> Le paquet postgresql14.x86_64 0:14.2-1PGDG.rhel7 sera installé ---> Le paquet postgresql14-libs.x86_64 0:14.2-1PGDG.rhel7 sera installé --> Résolution des dépendances terminée Dépendances résolues ================================================================================ Package Architecture Version Dépôt Taille ================================================================================ Installation : postgresql14-server x86_64 14.2-1PGDG.rhel7 pgdg14 5.5 M Installation pour dépendances : libicu x86_64 50.2-4.el7_7 base 6.9 M postgresql14 x86_64 14.2-1PGDG.rhel7 pgdg14 1.5 M postgresql14-libs x86_64 14.2-1PGDG.rhel7 pgdg14 267 k Résumé de la transaction ================================================================================ Installation 1 Paquet (+3 Paquets en dépendance) Taille totale des téléchargements : 14 M Taille d'installation : 55 M Downloading packages: (1/4): libicu-50.2-4.el7_7.x86_64.rpm | 6.9 MB 00:00 warning: /var/cache/yum/x86_64/7/pgdg14/packages/postgresql14-libs-14.2-1PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY La clé publique pour postgresql14-libs-14.2-1PGDG.rhel7.x86_64.rpm n'est pas installée (2/4): postgresql14-libs-14.2-1PGDG.rhel7.x86_64.rpm | 267 kB 00:01 (3/4): postgresql14-14.2-1PGDG.rhel7.x86_64.rpm | 1.5 MB 00:01 (4/4): postgresql14-server-14.2-1PGDG.rhel7.x86_64.rpm | 5.5 MB 00:00 -------------------------------------------------------------------------------- Total 7.5 MB/s | 14 MB 00:01 Récupération de la clé à partir de file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Importation de la clef GPG 0x442DF0F8 : ID utilisateur : « PostgreSQL RPM Building Project » Empreinte : 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Paquet : pgdg-redhat-repo-42.0-24.noarch (@/pgdg-redhat-repo-latest.noarch) Provient de : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG Running transaction check Running transaction test Transaction test succeeded Running transaction Installation : postgresql14-libs-14.2-1PGDG.rhel7.x86_64 1/4 Installation : libicu-50.2-4.el7_7.x86_64 2/4 Installation : postgresql14-14.2-1PGDG.rhel7.x86_64 3/4 Installation : postgresql14-server-14.2-1PGDG.rhel7.x86_64 4/4 Vérification : libicu-50.2-4.el7_7.x86_64 1/4 Vérification : postgresql14-libs-14.2-1PGDG.rhel7.x86_64 2/4 Vérification : postgresql14-server-14.2-1PGDG.rhel7.x86_64 3/4 Vérification : postgresql14-14.2-1PGDG.rhel7.x86_64 4/4 Installé : postgresql14-server.x86_64 0:14.2-1PGDG.rhel7 Dépendances installées : libicu.x86_64 0:50.2-4.el7_7 postgresql14.x86_64 0:14.2-1PGDG.rhel7 postgresql14-libs.x86_64 0:14.2-1PGDG.rhel7 Terminé !
Zainicjuj bazę danych i włącz automatyczne uruchamianie:
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb sudo systemctl enable postgresql-14 sudo systemctl start postgresql-14
Następnie przetestuj instalację:
sudo su - postgres psql
Wynik wyświetli się w następujący sposób:
$ sudo su - postgres -bash-4.2$ psql psql (14.2) Type "help" for help. postgres=# exit -bash-4.2$ exit $
Pamiętaj, że instalacja PostgreSQL domyślnie tworzy konto postgres, które jest kontem administratora bazy danych. Zachowaj ostrożność, kiedy z niego korzystasz.
Dodanie użytkownika do PostgreSQL
Istnieją dwie metody dodawania użytkowników w PostgreSQL: za pomocą zapytań SQL lub poleceń bash. W tym tutorialu opisujemy wyłącznie sposób SQL, ponieważ jest on bardziej wyczerpujący. Informacje o użyciu polecenia bash znajdziesz w oficjalnej dokumentacji. Aby utworzyć nowe konto użyj domyślnego konta postgres oraz CLI psql.
Utwórz rolę (rodzaj połączenia użytkowników i uprawnień w PostgreSQL):
postgres=# CREATE USER foo WITH PASSWORD 'bar';
Wynik wyświetli się w następujący sposób:
postgres=# CREATE USER foo WITH PASSWORD 'bar'; CREATE ROLE postgres=#
Utworzenie bazy danych
Utwórz bazę danych o nazwie "example" z użytkownikiem "foo" jako właścicielem:
postgres=# CREATE DATABASE example OWNER foo; CREATE DATABASE postgres=#
Aby korzystać z nowego konta użytkownika, utwórz użytkownika systemu Linux (tego typu polecenie wymaga uprawnień root):
$ sudo adduser foo
Wynik wyświetli się w następujący sposób:
$ sudo su - Dernière connexion : jeudi 12 mai 2022 à 09:42:40 UTC sur pts/0 # adduser foo # exit $
Przetestuj nowe konto:
sudo su - foo psql -d example
Wynik wyświetli się w następujący sposób:
$ sudo su - foo Dernière connexion : jeudi 12 mai 2022 à 10:09:42 UTC sur pts/0 $ psql -d example psql (14.2) Type "help" for help. example=>
Stwórz listę baz danych:
postgres=# \l
Wynik wyświetli się w następujący sposób:
postgres=# \l example=> \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- example | foo | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 rows)
Utworzenie tabeli i korzystanie z niej
Twórz tabele i wykorzystuj je do Twoich celów.
W przypadku następujących poleceń użyj uprzednio utworzonego użytkownika foo.
example=> CREATE TABLE first_table (id INT PRIMARY KEY NOT NULL, column1 CHAR(50));
Wynik wyświetli się w następujący sposób:
example=> CREATE TABLE first_table (id INT PRIMARY KEY NOT NULL, column1 CHAR(50)); CREATE TABLE example=>
Teraz możesz używać first_table w zapytaniach SQL:
example=> INSERT INTO first_table (id, column1) VALUES (1, 'example'); example=> SELECT * FROM first_table;
Wynik wyświetli się w następujący sposób:
example=> INSERT INTO first_table (id, column1) VALUES (1, 'example'); INSERT 0 1 example=> SELECT * FROM first_table; id | column1 ----+---------------------------------------------------- 1 | example (1 row)
Baza danych PostgreSQL została prawidłowo zainstalowana i skonfigurowana na Centos 7.