PostgreSQL 15 Debian 12’ye Nasıl Kurulur?

Bu kapsamlı adım adım öğreticiyi kullanarak PostgreSQL 15’i Debian 12’ye nasıl kuracağınızı öğreneceksiniz.  PostgreSQL, tam özellikli bir nesne-ilişkisel veritabanı yönetim sistemidir.  SQL standardının büyük bir bölümünü destekler ve kullanıcılar tarafından birçok yönden genişletilebilir olacak şekilde tasarlanmıştır.

PostgreSQL 15’i Debian 12’ye kurun

PostgreSQL 15’in kurulumu

Bu yazı itibariyle, PostgreSQL 15 şu anki başlıca PostgreSQL sürümüdür.

Neyse ki, varsayılan Debian 12 ana depoları PostgreSQL paketleri sağlar.

apt-cache policy postgresql

postgresql:
  Installed: (none)
  Candidate: 15+248
  Version table:
     15+248 500
        500 http://deb.debian.org/debian bookworm/main amd64 Packages

Bu, PostgreSQL 15.x’in Debian 12’ye kurulmasını kolaylaştırır.

Bu nedenle Debian 12 üzerinde PostgreSQL 15 kurmak için aşağıdaki komutu çalıştırın;

apt install postgresql postgresql-contrib

PostgreSQL’i Çalıştırmak

Yükleme tamamlandığında, PostgreSQL çalışacak ve sistem önyüklemesinde başlayacak şekilde ayarlanır.  Hizmeti kontrol ederek doğrulayın.

systemctl status [email protected]
[email protected] - PostgreSQL Cluster 15-main
     Loaded: loaded (/lib/systemd/system/[email protected]; enabled-runtime; preset: enabled)
     Active: active (running) since Thu 2023-07-06 18:53:12 CEST; 12s ago
    Process: 4877 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 15-main start (code=exited, status=0>
   Main PID: 4882 (postgres)
      Tasks: 6 (limit: 2284)
     Memory: 19.2M
        CPU: 154ms
     CGroup: /system.slice/system-postgresql.slice/[email protected]
             ├─4882 /usr/lib/postgresql/15/bin/postgres -D /var/lib/postgresql/15/main -c config_file=/etc/postgr>
             ├─4883 "postgres: 15/main: checkpointer "
             ├─4884 "postgres: 15/main: background writer "
             ├─4886 "postgres: 15/main: walwriter "
             ├─4887 "postgres: 15/main: autovacuum launcher "
             └─4888 "postgres: 15/main: logical replication launcher "

Jul 06 18:53:10 bookworm systemd[1]: Starting [email protected] - PostgreSQL Cluster 15-main...
Jul 06 18:53:12 bookworm systemd[1]: Started [email protected] - PostgreSQL Cluster 15-main...

PostgreSQL’in Diğer Sürümlerini Debian 12’ye Kurmak

PostgreSQL APT Deposunu Kurun

Debian 12’de PostgreSQL’in diğer sürümlerini kurmak istiyorsanız, PostgreSQL apt deposunu eklemeniz gerekir;

apt install postgresql-common
sudo sh /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
apt update

PostgreSQL 14’ü Debian 12’ye kurun

apt install postgresql-14 postgresql-contrib-14

PostgreSQL 13’ü Debian 12’ye kurun

apt install postgresql-13 postgresql-contrib-13

You should be able to install other versions you need.

Yüklü PostgreSQL Sürümünün komut satırında Doğrulanması

PostgreSQL kurulumunun sürümünü aşağıdaki komutu kullanarak komut satırında bulabilirsiniz;

/usr/lib/postgresql/15/bin/postgres -V

Örnek komut çıktısı;

postgres (PostgreSQL) 15.3 (Debian 15.3-0+deb12u1)

Benzer şekilde şu komutu da kullanabilirsiniz;

sudo -Hiu postgres psql -c "SELECT version();"

Örnek çıktı;


                                                      version                                                      
-------------------------------------------------------------------------------------------------------------------
 PostgreSQL 15.3 (Debian 15.3-0+deb12u1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
(1 row)

PostgreSQL’de oturum açma

Varsayılan olarak, postgres kullanıcısı PostgreSQL’in yüklenmesi üzerine oluşturulur.

id postgres
uid=114(postgres) gid=122(postgres) groups=122(postgres),110(ssl-cert)

Kullanıcının giriş dizini /var/lib/postgresql olarak ayarlanmıştır.

getent passwd postgres
postgres:x:114:122:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash

Bu nedenle, PostgreSQL’e giriş yapmak için önce komutu kullanarak postgres kullanıcısına geçin;

sudo -Hiu postgres

Bu, bash istemini şu şekilde değiştirir;

postgres@bookworm:~$

Oturum açtıktan sonra, PostgreSQL kabuğuna ulaşmak için psql komutunu çalıştırabilirsiniz.  psql, sorguları etkileşimli olarak yazmanızı, bunları PostgreSQL’e vermenizi ve sorgu sonuçlarını görmenizi sağlayan bir PostgreSQL etkileşimli terminal komutudur.

psql

Bu istemi şu şekilde değiştirir;


psql (15.3 (Debian 15.3-0+deb12u1))
Type "help" for help.

postgres=#

Çeşitli komut kullanımını görmek için help yazın.

help

You are using psql, the command-line interface to PostgreSQL.
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit
postgres=#
\h

Available help:
  ABORT                            CREATE FOREIGN DATA WRAPPER      DROP ROUTINE
  ALTER AGGREGATE                  CREATE FOREIGN TABLE             DROP RULE
  ALTER COLLATION                  CREATE FUNCTION                  DROP SCHEMA
  ALTER CONVERSION                 CREATE GROUP                     DROP SEQUENCE
  ALTER DATABASE                   CREATE INDEX                     DROP SERVER
  ALTER DEFAULT PRIVILEGES         CREATE LANGUAGE                  DROP STATISTICS
  ALTER DOMAIN                     CREATE MATERIALIZED VIEW         DROP SUBSCRIPTION
  ALTER EVENT TRIGGER              CREATE OPERATOR                  DROP TABLE
  ALTER EXTENSION                  CREATE OPERATOR CLASS            DROP TABLESPACE
  ALTER FOREIGN DATA WRAPPER       CREATE OPERATOR FAMILY           DROP TEXT SEARCH CONFIGURATION
  ALTER FOREIGN TABLE              CREATE POLICY                    DROP TEXT SEARCH DICTIONARY
  ALTER FUNCTION                   CREATE PROCEDURE                 DROP TEXT SEARCH PARSER
  ALTER GROUP                      CREATE PUBLICATION               DROP TEXT SEARCH TEMPLATE
  ALTER INDEX                      CREATE ROLE                      DROP TRANSFORM
  ALTER LANGUAGE                   CREATE RULE                      DROP TRIGGER
  ALTER LARGE OBJECT               CREATE SCHEMA                    DROP TYPE
  ALTER MATERIALIZED VIEW          CREATE SEQUENCE                  DROP USER
  ALTER OPERATOR                   CREATE SERVER                    DROP USER MAPPING
  ALTER OPERATOR CLASS             CREATE STATISTICS                DROP VIEW
  ALTER OPERATOR FAMILY            CREATE SUBSCRIPTION              END
  ALTER POLICY                     CREATE TABLE                     EXECUTE
  ALTER PROCEDURE                  CREATE TABLE AS                  EXPLAIN
  ALTER PUBLICATION                CREATE TABLESPACE                FETCH
  ALTER ROLE                       CREATE TEXT SEARCH CONFIGURATION GRANT
  ALTER ROUTINE                    CREATE TEXT SEARCH DICTIONARY    IMPORT FOREIGN SCHEMA
  ALTER RULE                       CREATE TEXT SEARCH PARSER        INSERT
  ALTER SCHEMA                     CREATE TEXT SEARCH TEMPLATE      LISTEN
  ALTER SEQUENCE                   CREATE TRANSFORM                 LOAD
  ALTER SERVER                     CREATE TRIGGER                   LOCK
  ALTER STATISTICS                 CREATE TYPE                      MERGE
  ALTER SUBSCRIPTION               CREATE USER                      MOVE
  ALTER SYSTEM                     CREATE USER MAPPING              NOTIFY
  ALTER TABLE                      CREATE VIEW                      PREPARE
  ALTER TABLESPACE                 DEALLOCATE                       PREPARE TRANSACTION
  ALTER TEXT SEARCH CONFIGURATION  DECLARE                          REASSIGN OWNED
  ALTER TEXT SEARCH DICTIONARY     DELETE                           REFRESH MATERIALIZED VIEW
  ALTER TEXT SEARCH PARSER         DISCARD                          REINDEX
  ALTER TEXT SEARCH TEMPLATE       DO                               RELEASE SAVEPOINT
  ALTER TRIGGER                    DROP ACCESS METHOD               RESET
  ALTER TYPE                       DROP AGGREGATE                   REVOKE
  ALTER USER                       DROP CAST                        ROLLBACK
  ALTER USER MAPPING               DROP COLLATION                   ROLLBACK PREPARED
  ALTER VIEW                       DROP CONVERSION                  ROLLBACK TO SAVEPOINT
  ANALYZE                          DROP DATABASE                    SAVEPOINT
  BEGIN                            DROP DOMAIN                      SECURITY LABEL
  CALL                             DROP EVENT TRIGGER               SELECT
  CHECKPOINT                       DROP EXTENSION                   SELECT INTO
  CLOSE                            DROP FOREIGN DATA WRAPPER        SET
  CLUSTER                          DROP FOREIGN TABLE               SET CONSTRAINTS
  COMMENT                          DROP FUNCTION                    SET ROLE
  COMMIT                           DROP GROUP                       SET SESSION AUTHORIZATION
  COMMIT PREPARED                  DROP INDEX                       SET TRANSACTION
  COPY                             DROP LANGUAGE                    SHOW
  CREATE ACCESS METHOD             DROP MATERIALIZED VIEW           START TRANSACTION
  CREATE AGGREGATE                 DROP OPERATOR                    TABLE
  CREATE CAST                      DROP OPERATOR CLASS              TRUNCATE
  CREATE COLLATION                 DROP OPERATOR FAMILY             UNLISTEN
  CREATE CONVERSION                DROP OWNED                       UPDATE
  CREATE DATABASE                  DROP POLICY                      VACUUM
  CREATE DOMAIN                    DROP PROCEDURE                   VALUES
  CREATE EVENT TRIGGER             DROP PUBLICATION                 WITH
  CREATE EXTENSION                 DROP ROLE

PostgreSQL’e Başlarken

Artık PostgreSQL’i kullanmaya başlayabilirsiniz.

PostgreSQL Veritabanı Oluşturun

Yukarıda gösterildiği gibi PostgreSQL’e giriş yaptıktan sonra veritabanlarınızı oluşturabilirsiniz.

Örneğin kifarunix isimli bir veritabanı oluşturmak için;

create database kifarunix;

PostgreSQL’de veritabanlarını listeleme

\l ,meta-komutunu kullanarak PostgreSQL’de oturum açmışken veritabanlarını listeleyebilirsiniz;

\l

örnek çıktı;


                                                 List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    | ICU Locale | Locale Provider |   Access privileges   
-----------+----------+----------+-------------+-------------+------------+-----------------+-----------------------
 kifarunix | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | 
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
(4 rows)

PostgreSQL Veritabanı Kullanıcısı Oluşturun

Komutu kullanarak PostgreSQL veritabanı kullanıcısı oluşturabilirsiniz;

CREATE USER your_username WITH PASSWORD 'your_password';

Örneğin;

create user kifarunixadmin with password 'ChangeME_pass';

PostgreSQL’de Veritabanı Kullanıcılarını Listeleme

\du meta-komutunu kullanarak PostgreSQL’de veritabanı kullanıcılarını listeleyebilirsiniz;

\du

                                      List of roles
   Role name    |                         Attributes                         | Member of 
----------------+------------------------------------------------------------+-----------
 kifarunixadmin |                                                            | {}
 postgres       | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

PostgreSQL’de Veritabanı Kullanıcısına Roller Verme

Bir kullanıcıya belirli bir veritabanında belirli roller verebilirsiniz.

Örneğin, veritabanındaki tüm ayrıcalıkları kullanıcıya verin;

GRANT ALL PRIVILEGES ON DATABASE your_database_name TO your_username;

Örneğin

grant all privileges on database kifarunix to kifarunixadmin;

Belirli roller de verebilirsiniz.  PostgreSQL GRANT hakkında daha fazlasını okuyabilirsiniz.

Yukarıdaki grant komutu, username gibi bir rol yaratır;

select rolname from pg_roles;

          rolname          
---------------------------
 postgres
 pg_database_owner
 pg_read_all_data
 pg_write_all_data
 pg_monitor
 pg_read_all_settings
 pg_read_all_stats
 pg_stat_scan_tables
 pg_read_server_files
 pg_write_server_files
 pg_execute_server_program
 pg_signal_backend
 pg_checkpoint
 kifarunixadmin
(14 rows)

Veritabanında kullanıcımıza atanan ayrıcalıkları listelemek için;

\dp kifarunixadmin

Belirli bir nesne için “Erişim ayrıcalıkları” sütunu boşsa, bu, nesnenin varsayılan ayrıcalıklara sahip olduğu anlamına gelir (yani, ilgili sistem kataloğundaki ayrıcalıklar girişi boştur).  Varsayılan ayrıcalıklar her zaman sahip için tüm ayrıcalıkları içerir ve nesne türüne bağlı olarak KAMU için bazı ayrıcalıklar içerebilir.

PostgreSQL hakkında daha fazla bilgi edinmek için belgeler sayfasındaki PostgreSQL’e Başlarken’e bakın.

 

Yazının orijinalini buradan okuyabilirsiniz.