# Temel Yapılandırma

Bu bölümde PostgreSQL kurulumu sonrası yapılması gereken temel yapılandırma adımları, önemli yapılandırma dosyaları ve servis yönetimi anlatılacaktır.

## Yapılandırma Dosyaları

PostgreSQL'in ana yapılandırma dosyaları genellikle veritabanı kümesinin (data directory) içinde bulunur. Bu dizinin konumu dağıtıma ve kuruluma göre değişebilir, ancak genellikle şuralarda bulunur:

* **RHEL Tabanlı:** `/var/lib/pgsql/<sürüm>/data/` (Örn: `/var/lib/pgsql/16/data/`)
* **Debian Tabanlı:** `/etc/postgresql/<sürüm>/<küme_adı>/` (Örn: `/etc/postgresql/16/main/`)

Bu dizin içindeki en önemli iki yapılandırma dosyası şunlardır:

1. **`postgresql.conf`**: Sunucunun ana yapılandırma dosyasıdır. Dinlenecek ağ arayüzleri (`listen_addresses`), port (`port`), bellek ayarları (`shared_buffers`, `work_mem`), loglama ayarları (`log_destination`, `logging_collector`), bağlantı limitleri (`max_connections`) gibi birçok parametreyi içerir. Değişikliklerin çoğu bu dosyada yapılır ve genellikle servisin yeniden başlatılmasını veya yeniden yüklenmesini (`reload`) gerektirir.
2. **`pg_hba.conf`** (Host-Based Authentication): İstemci kimlik doğrulama kurallarını tanımlar. Hangi kullanıcıların, hangi veritabanlarına, hangi IP adreslerinden (veya soketlerden) ve hangi kimlik doğrulama yöntemleriyle (örn: `trust`, `peer`, `scram-sha-256`, `md5`) bağlanabileceğini belirler. Bu dosyadaki değişiklikler genellikle servisin yeniden yüklenmesi (`reload`) ile aktif hale gelir.
   * **Önemli Not:** Varsayılan olarak, PostgreSQL genellikle sadece yerel Unix soketi üzerinden `peer` veya `trust` kimlik doğrulamasına izin verir. Ağ üzerinden parola ile bağlanmak için `pg_hba.conf` dosyasını düzenlemeniz ve `listen_addresses` ayarını `postgresql.conf` içinde değiştirmeniz gerekir.

## Servis Yönetimi (systemd)

`systemd` kullanan modern Linux dağıtımlarında PostgreSQL servisini yönetmek için `systemctl` komutu kullanılır. Servis adı genellikle sürüm numarasını içerir.

* **Servis Durumunu Kontrol Etme:**

  ```bash
  # RHEL Tabanlı (Örn: Sürüm 16)
  sudo systemctl status postgresql-16

  # Debian Tabanlı (Örn: Sürüm 16, Küme 'main')
  sudo systemctl status postgresql@16-main
  ```
* **Servisi Başlatma:**

  ```bash
  # RHEL Tabanlı
  sudo systemctl start postgresql-16

  # Debian Tabanlı
  sudo systemctl start postgresql@16-main
  ```
* **Servisi Durdurma:**

  ```bash
  # RHEL Tabanlı
  sudo systemctl stop postgresql-16

  # Debian Tabanlı
  sudo systemctl stop postgresql@16-main
  ```
* **Servisi Yeniden Başlatma:**

  ```bash
  # RHEL Tabanlı
  sudo systemctl restart postgresql-16

  # Debian Tabanlı
  sudo systemctl restart postgresql@16-main
  ```
* **Yapılandırmayı Yeniden Yükleme (Reload):**`postgresql.conf` veya `pg_hba.conf` dosyalarında yapılan bazı değişiklikleri servisi tamamen durdurup başlatmadan uygulamak için kullanılır.

  ```bash
  # RHEL Tabanlı
  sudo systemctl reload postgresql-16

  # Debian Tabanlı
  sudo systemctl reload postgresql@16-main
  ```
* **Servisi Sistem Açılışında Etkinleştirme:**

  ```bash
  # RHEL Tabanlı
  sudo systemctl enable postgresql-16

  # Debian Tabanlı
  sudo systemctl enable postgresql@16-main
  ```
* **Servisi Sistem Açılışında Devre Dışı Bırakma:**

  ```bash
  # RHEL Tabanlı
  sudo systemctl disable postgresql-16

  # Debian Tabanlı
  sudo systemctl disable postgresql@16-main
  ```

Doğru servis adını bulmak için `systemctl list-units | grep postgres` gibi komutlar kullanılabilir.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://linux-yonetimi.veriteknik.net.tr/veritabani/postgresql/temel-yapilandirma.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
