[1] PostgreSQL 13 – Instalacja

26 stycznia 2022 Wyłączono przez Adam [zicherka] Nogły

Zainstaluj PostgreSQL aby skonfigurować serwer bazodanowy.

[1] Przełącz się na aktualne moduły PosgreSQL.

[root@vlsr01 ~]# dnf module reset postgresql

[2] Zainstaluj i uruchom PostgreSQL.

[root@vlsr01 ~]# dnf module -y install postgresql:13
[root@vlsr01 ~]# postgresql-setup --initdb
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

[root@vlsr01 ~]# systemctl enable --now postgresql

[3] Przy domyślnych ustawieniach, możliwe jest zalogowanie do PostgreSQL tylko z [localhost] z autentykacją [peer]. Więcej informacji odnośnie metod autentykacji dostępne jest na: PostgreSQL: Documentation: 13: 20.1. The pg_hba.conf File.

#zezwolenie na połączenia tylko z localhost
[root@vlsr01 ~]# grep listen_addresses /var/lib/pgsql/data/postgresql.conf
#listen_addresses = 'localhost'
# what IP address(es) to listen on;

#domyślna metoda autentykacji
[root@vlsr01 ~]# grep -v -E "^#|^$" /var/lib/pgsql/data/pg_hba.conf
local   all             all                                     peer
host    all             all             127.0.0.1/32            ident
host    all             all             ::1/128                 ident
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident
host    replication     all             ::1/128                 ident

[4] W przypadku uwierzytelniania [peer], aby połączyć się z serwerem PostgreSQL, wymagany jest użytkownik systemu operacyjnego i użytkownik PostgreSQL o tej samej nazwie.

#dodaj użytkownika OS
#my użyjemy istniejącego użytkownika [user01]
[root@vlsr01 ~]# useradd user01

#dodaj użytkownika PostgreSQL i jego bazę danych z administratorem PostgreSQL
[root@vlsr01 ~]# su - postgres
[postgres@vlsr01 ~]$ createuser user01
[postgres@vlsr01 ~]$ createdb testdb -O user01

#pokaż użytkowników i bazy danych
[postgres@vlsr01 ~]$ psql -c "select usename from pg_user;"
 usename
----------
 postgres
 user01
(2 rows)
[postgres@vlsr01 ~]$ psql -l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | pl_PL.UTF-8 | pl_PL.UTF-8 |
 template0 | postgres | UTF8     | pl_PL.UTF-8 | pl_PL.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | pl_PL.UTF-8 | pl_PL.UTF-8 | postgres=CTc/postgres+
           |          |          |             |             | =c/postgres
 testdb    | user01   | UTF8     | pl_PL.UTF-8 | pl_PL.UTF-8 |
(4 rows)

[5] Połącz się z bazą danych za pomocą wcześniej dodanego użytkownika.

#podłączenie do bazy
[user01@vlsr01 ~]$ psql testdb
psql (13.5)
Type "help" for help.
testdb=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 user01    |                                                            | {}
testdb=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | pl_PL.UTF-8 | pl_PL.UTF-8 |
 template0 | postgres | UTF8     | pl_PL.UTF-8 | pl_PL.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | pl_PL.UTF-8 | pl_PL.UTF-8 | postgres=CTc/postgres+
           |          |          |             |             | =c/postgres
 testdb    | user01   | UTF8     | pl_PL.UTF-8 | pl_PL.UTF-8 |
(4 rows)
testdb=# create table test_table (no int, name text);
CREATE TABLE
testdb=# \dt
           List of relations
 Schema |    Name    | Type  |  Owner
--------+------------+-------+----------
 public | test_table | table | postgres
(1 row)
testdb=# insert into test_table (no,name) values (01,'CentOS');
INSERT 0 1
testdb=# select * from test_table;
 no |  name
----+--------
  1 | CentOS
(1 row)
testdb=# drop table test_table;
DROP TABLE
testdb=# \dt
Did not find any relations.
#wyjście
testdb=# \q
#skasuj testdb
[user01@vlsr01 ~]$ dropdb testdb
[user01@vlsr01 ~]$ psql -l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | pl_PL.UTF-8 | pl_PL.UTF-8 |
 template0 | postgres | UTF8     | pl_PL.UTF-8 | pl_PL.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | pl_PL.UTF-8 | pl_PL.UTF-8 | postgres=CTc/postgres+
           |          |          |             |             | =c/postgres
(3 rows)