2.2. Bir Veritabanının Oluşturulması

Veritabanına sunucusuna erişiminiz olup olmadığını görmek için yapılacak ilk sınama bir veritabanı oluşturmaya çalışmaktır. Çalışan bir PostgreSQL sunucusu çok sayıda veritabanını yönetebilir. Genellikle, her proje ya da her kullanıcı için ayrı bir veritabanı kullanılır.

Muhtemelen, sistem yöneticiniz sizin için bir veritabanını zaten oluşturmuştur ve size oluşturduğu veritabanı ismini de söylemiştir. Böyle bir durumda bu adımı geçerek bir sonraki bölüme bakabilirsiniz.

Bu örnekte, yeni bir veritabanını mydb ismiyle şöyle oluşturabilirsiniz:

$ createdb -e mydb

Çıktısının şöyle olması lazım:

SELECT pg_catalog.set_config('search_path', '', false);
CREATE DATABASE mydb;

Bu çıktıyı alıyorsanız, bu adım tamamlanmış demektir.

Ama, createdb komutunun bulunamadığına ilişkin, şöyle bir çıktı alıyorsanız,

createdb: command not found

PostgreSQL olması gerektiği gibi kurulmamış demektir. Ya hiç kurulum yapılmamıştır ya da dosya arama yolları ($PATH) doğru yapılandırılmamıştır. Komutu dosya yolunu belirterek kullanmayı deneyin:

$ /usr/local/pgsql/bin/createdb mydb

Bu dosya yolu sisteminizde farklı olabilir. Böyle bir durumda sistem yöneticisi ile bağlantı kurmayı deneyin ya da kurulum adımlarını tekrar gözden geçirip sorunu tespit etmeye çalışın.

Çıktı şöyle de olabilirdi:

createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
     Is the server running locally and accepting connections on that socket?

Böyle bir hatanın anlamı ya sunucu başlatılmamıştır ya da createdb sunucunun aradığı yerde değildir. Kurulum adımlarını yeniden gözden geçirin ya da sistem yöneticisi ile temasa geçin.

Yanıt şöyle de olabilirdi:

createdb: hata: template1 veritabanına bağlanılamadı: ÖLÜMCÜL (FATAL):  "nilgun" rolü mevcut değil

Burada "nilgun" yerine sizin kullanıcı isminiz görünecektir. Bu, sistem yöneticinizin sizin için bir PostgreSQL kullanıcısı hesabı açmadığı anlamına gelir. (PostgreSQL kullanıcı hesapları, sistem kullanıcı hesaplarından ayrıdır.) Eğer sistem yöneticisi sizseniz, hesapların oluşturulması ile ilgili bilgi edinmek için PostgreSQL belgelerindeki Veritabanı Kullanıcıları ve Grupları kısmına bakın. İlk kullanıcı hesabını oluşturmak için PostgreSQL'i kuran işletim sistemi kullanıcısı (genellikle bu kullanıcı postgres'dir) olmanız gerekecektir:[63]

İsterseniz, bu amaçla, bir sistem kullanıcı isminden farklı bir PostgreSQL kullanıcı ismini de kullanabilirsiniz; PostgreSQL kullanıcı isminini belirtmek için ya -U seçeneğini kullanmalı ya da bu ismi PGUSER ortam değişkenine atamalısınız.

Eğer bir kullanıcı hesabınız varsa, ama bir veritabanı oluşturma izniniz yoksa, şöyle bir çıktı alacaksınız:

SELECT pg_catalog.set_config('search_path', '', false);
CREATE DATABASE mydb;
createdb: hata: veritabanı yaratma başarısız oldu: HATA:  veritabanı oluşturmaya izin verilmedi.

Her kullanıcının yeni bir veritabanı oluşturma yetkisi yoktur. Eğer PostgreSQL sizin veritabanı oluşturma isteğinizi geri çeviriyorsa, sistem yöneticisinin size gerekli izinleri vermesi gerekmektedir. Böyle bir durumda sistem yöneticisi ile temasa geçin. Eğer sistem yöneticisi siz iseniz böyle bir izin işlemi için sunucuyu hangi kullanıcı ile başlatmışsanız onun ile sisteme giriş yapın ve bu eğiticiyi okuyup uygulamak isteyenlere gerekli hakları tanıyın.[64]

İsterseniz başka isimler ile de veritabanları oluşturabilirsiniz. PostgreSQL istediğiniz sayıda veritabanı oluşturma imkanını sunmaktadır. Veritabanı isminin ilk karakteri bir harf olmalı ve isim 63 bayttan daha uzun olmamalıdır. Tercihen kullanıcı adınız ile aynı ismi taşıyan veritabanları oluşturulması tavsiye olunur. Çoğu araç, böyle bir veritabanı ismini öntanımlı olarak kabul eder ve bu sizi az da olsa yazmaktan kurtarır. Yeni bir veritabanı oluşturmak için, basitçe şunu yazın:

$ createdb

Eğer veritabanınızı artık kullanmak istemiyorsanız onu kaldırabilirsiniz. Örnek olarak, eğer siz mydb adlı veritabanının sahibi iseniz, bunu şöyle silebilirsiniz:

$ dropdb mydb

(Bu komut için, veritabanı ismi öntanımlı olarak kullanıcı ismi değildir. Daima bu ismi belirtmeniz gerekir.) Bu işlem sonucunda fiziksel olarak veritabanınız ile ilgili bütün dosyalar silinecektir ve veritabanınızı geri alamayacaksınız. Bu yüzden bu komutu uygulamadan önce kararınızı tekrar gözden geçirmeniz tavsiye olunur.

createdb ve dropdb hakkında daha fazla bilgi edinmek için PostgreSQL belgelerindeki createdb ve dropdb komutlarının açıklamalarına bakınız.



[63]

$ sudo su postgres
$ createuser --interactive <kullanıcı>

[64] Bunun neden böyle çalıştığına dair açıklama: PostgreSQL kullanıcı isimleri sistem kullanıcı isimlerinden bağımsızdır. Eğer bir veritabanına bağlanıyorsanız, hangi PostgreSQL kullanıcı adı ile bağlanacağınızı belirtebilirsiniz; bunu yapmazsanız, sistem kullanıcısı isminiz öntanımlı PostgreSQL kullanıcı isminiz olarak kullanacaktır. Böyle bir durumda veritabanı sunucusunu başlatan kullanıcı ile aynı isme sahip bir PostgreSQL kullanıcısı olacaktır ve böyle bir durumda bu kullanıcı her zaman veritabanı oluşturma izinlerine sahip olacaktır. Her seferinde o kullanıcı ile sisteme girmektense -U seçeneği ile PostgreSQL'e bağlanmak istediğiniz kullanıcı adını belirtebilirsiniz.