Drupal Kurulumu İçin Veritabanı Oluşturma

Drupal kurulumuna başlamadan önce hazırlamamız gereken temel bileşenlerden biri veritabanıdır. İçerikler, kullanıcılar, yapılandırmalar ve Drupal'ın çalışırken ihtiyaç duyduğu pek çok bilgi bu veritabanında saklanır.

Drupal; MySQL, MariaDB, PostgreSQL ve SQLite gibi farklı veritabanlarını destekler. Kullanacağımız sürümün Drupal sürümüyle uyumlu olması gerekir. Örneğin Drupal 11 için MySQL 8.0+, MariaDB 10.6+, PostgreSQL 16+ ve SQLite 3.45+ desteklenmektedir.

Bu yazıda örnek olarak MySQL/MariaDB üzerinden ilerleyeceğiz.

Veritabanı Oluşturmadan Önce Nelere İhtiyacımız Var?

Drupal kurulum ekranında bizden temel olarak şu bilgiler istenir:

  • Veritabanı adı
  • Veritabanı kullanıcı adı
  • Veritabanı şifresi
  • Veritabanı sunucusu
  • Gerekirse port bilgisi

Örneğin sunucu üzerinde şöyle bir yapı oluşturabiliriz:

text
Database: drupal_site
User: drupal_user
Host: localhost

Burada özellikle Drupal için ayrı bir veritabanı kullanıcısı oluşturmak iyi bir pratiktir. Drupal'ın root gibi tüm veritabanlarına erişebilen bir kullanıcıyla çalışmasına gerek yoktur.

Drupal'ın resmi dokümantasyonu da public sunucularda veritabanının önceden oluşturulmasını ve Drupal'a daha sınırlı yetkilere sahip ayrı bir kullanıcı verilmesini önerir.

MySQL veya MariaDB'ye Bağlanma

Ubuntu gibi bir sunucuda MySQL veya MariaDB kuruluysa önce veritabanı konsoluna bağlanabiliriz:

bash
sudo mysql

Root kullanıcısında parola ile bağlantı yapılandırılmışsa:

bash
mysql -u root -p

kullanabiliriz.

İkinci komuttaki -u root, MySQL'e hangi kullanıcıyla bağlanacağımızı; -p ise parola sorulacağını belirtir.

Bağlantı başarılı olduğunda aşağıdakine benzer bir konsol açılır:

text
mysql>

Artık veritabanı ve kullanıcı oluşturabiliriz.

Drupal İçin Veritabanı Oluşturma

Örnek olarak drupal_site isminde bir veritabanı oluşturalım:

sql
CREATE DATABASE drupal_site
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

Burada yalnızca veritabanını oluşturmuyor, karakter setini de belirliyoruz.

utf8mb4, Unicode karakterleri destekler. Türkçe karakterler, farklı alfabeler ve emoji gibi karakterlerle problem yaşamamak için Drupal veritabanlarında kullanılması gereken karakter setidir.

utf8mb4_unicode_ci ise karakterlerin karşılaştırılması ve sıralanmasında kullanılan collation değeridir. Drupal'ın resmi kurulum dokümantasyonu MySQL/MariaDB veritabanlarında utf8mb4 ile birlikte utf8mb4_unicode_ci veya utf8mb4_general_ci kullanılmasını önerir.

Veritabanının oluştuğunu kontrol etmek istersek:

sql
SHOW DATABASES;

komutunu kullanabiliriz.

Listede:

text
drupal_site

görünüyorsa bu adım tamamlanmıştır.

Drupal İçin Veritabanı Kullanıcısı Oluşturma

Şimdi yalnızca bu Drupal projesinin kullanacağı bir kullanıcı oluşturalım:

sql
CREATE USER 'drupal_user'@'localhost'
IDENTIFIED BY 'GucluBirSifreBuraya';

Burada:

text
drupal_user

kullanıcı adıdır.

localhost ise bu kullanıcının yalnızca aynı sunucu üzerinden bağlantı yapabileceğini belirtir. Drupal ile MySQL aynı sunucudaysa genellikle istediğimiz yapı budur.

Gerçek projede örnekteki gibi basit veya tekrar kullanılan bir parola yerine güçlü ve projeye özel bir parola kullanılmalıdır.

Kullanıcıya Veritabanı Yetkisi Verme

Kullanıcıyı oluşturmuş olmamız henüz drupal_site veritabanına erişebileceği anlamına gelmez. Gerekli yetkileri ayrıca vermemiz gerekir:

sql
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES
ON `drupal_site`.*
TO 'drupal_user'@'localhost';

Komut biraz uzun görünse de yaptığı iş basittir: drupal_user kullanıcısının yalnızca drupal_site veritabanında ihtiyaç duyduğu işlemleri yapmasına izin verir.

Drupal kurulum sırasında tablo oluşturacağı için CREATE, sonrasında içerik ve yapılandırma verilerini okuyup değiştireceği için de SELECT, INSERT, UPDATE ve DELETE gibi yetkilere ihtiyaç duyar. Drupal'ın resmi kurulum dokümanında da bu izinler belirtilmektedir.

Burada özellikle:

sql
ON `drupal_site`.*

kısmına dikkat etmek gerekir. Bu ifade kullanıcının yalnızca bu veritabanında yetkili olduğunu belirtir. Böylece aynı MySQL sunucusunda başka projeler bulunuyorsa Drupal kullanıcısı onların veritabanlarına erişemez.

Bağlantıyı Test Edelim

Drupal kurulumuna geçmeden önce oluşturduğumuz kullanıcıyla gerçekten bağlantı kurulabildiğini kontrol etmek faydalıdır.

Önce MySQL'den çıkalım:

sql
exit;

Ardından yeni kullanıcıyla bağlanalım:

bash
mysql -u drupal_user -p drupal_site

Parolayı girdikten sonra bağlantı kuruluyorsa veritabanı tarafındaki temel hazırlığımız tamamlanmış demektir.

Basit bir kontrol için:

sql
SHOW TABLES;

çalıştırabiliriz.

Drupal'ı henüz kurmadığımız için:

text
Empty set

görmemiz normaldır. Drupal kurulumu başladığında gerekli tablolar otomatik olarak oluşturulacaktır.

Drupal Kurulum Ekranına Hangi Bilgileri Gireceğiz?

Drupal kurulumu sırasında Set up database ekranına geldiğimizde oluşturduğumuz bilgileri kullanabiliriz.

Örneğimiz için:

text
Database type: MySQL, MariaDB, Percona Server
Database name: drupal_site
Database username: drupal_user
Database password: ********
Host: localhost

Drupal ve veritabanı aynı sunucuda çalışıyorsa host çoğunlukla localhost olur.

Docker, DDEV veya Docksal gibi container tabanlı yapılarda ise durum farklıdır. Burada host olarak localhost yerine veritabanı container'ının service adı kullanılabilir.

Örneğin Docker Compose içerisinde servis:

yaml
services:
  db:
    image: mariadb

şeklinde tanımlandıysa veritabanı host'u çoğunlukla:

text
db

olacaktır. Çünkü Drupal container'ı açısından localhost kendi container'ını ifade eder, veritabanı container'ını değil.

phpMyAdmin veya Hosting Panelinden Oluşturabilir miyiz?

Sunucuya SSH erişimi olmayan durumlarda veritabanını komut satırından oluşturmak zorunda değiliz.

cPanel, Plesk veya phpMyAdmin üzerinden de:

  1. yeni bir veritabanı,
  2. yeni bir kullanıcı,
  3. bu kullanıcı için veritabanı yetkileri

oluşturulabilir.

Burada dikkat edilmesi gereken nokta yine aynıdır: Drupal için ayrı bir kullanıcı oluşturmak ve kullanıcının yalnızca ilgili veritabanına erişmesini sağlamaktır. Drupal'ın resmi kurulum dokümanında cPanel/Plesk ve phpMyAdmin üzerinden veritabanı oluşturma yöntemleri de desteklenen yöntemler arasında gösterilmektedir.

Bazı hosting panelleri veritabanı ve kullanıcı adının başına otomatik olarak hosting hesabının adını ekleyebilir.

Örneğin biz:

text
drupal_site

oluşturduğumuzu düşünürken gerçek veritabanı adı:

text
webuser_drupal_site

olabilir. Drupal kurulum ekranına panelde görünen gerçek veritabanı adının yazılması gerekir.

PostgreSQL Kullanıyorsak

Drupal projesinde PostgreSQL tercih ediliyorsa işlem mantığı yine aynıdır: önce kullanıcı, ardından bu kullanıcıya ait veritabanı oluşturulur.

Örneğin:

bash
createuser --pwprompt --encrypted --no-adduser --no-createdb drupal_user

ardından:

bash
createdb --encoding=UNICODE --owner=drupal_user drupal_site

kullanılabilir.

İlk komut drupal_user kullanıcısını, ikinci komut ise sahibi bu kullanıcı olan drupal_site veritabanını oluşturur.

Güncel Drupal sürümlerinde PostgreSQL kullanılırken pg_trgm extension'ının da ilgili Drupal veritabanında aktif olması gerekir.

Örneğin:

sql
CREATE EXTENSION pg_trgm;

Bu komut başka bir veritabanında değil, Drupal'ın kullanacağı veritabanına bağlıyken çalıştırılmalıdır.

Sık Karşılaşılan Hatalar

Drupal kurulumu sırasında:

text
Failed to connect to your database server

benzeri bir hata alırsak ilk kontrol etmemiz gerekenler database name, username, password ve host bilgileridir.

Örneğin MySQL container içerisinde çalışıyor ancak Drupal kurulumunda:

text
Host: localhost

yazıyorsak bağlantı kurulamayabilir. Bu durumda Docker service adını kullanmamız gerekebilir.

Bir diğer sık karşılaşılan problem kullanıcının veritabanına erişebilmesi ancak tablo oluşturma yetkisinin bulunmamasıdır. Böyle bir durumda bağlantı başarılı olur fakat Drupal kurulumu sırasında tablo oluşturulamadığı için kurulum devam etmez.

Kullanıcının yetkilerini kontrol etmek için:

sql
SHOW GRANTS FOR 'drupal_user'@'localhost';

komutunu kullanabiliriz. Bu komut özellikle bağlantının çalıştığı ancak Drupal kurulumunun veritabanı aşamasında hata verdiği durumlarda oldukça faydalıdır.

Sonuç

Drupal için veritabanı hazırlarken aslında üç temel işlem yapıyoruz: Drupal'a ait bir veritabanı oluşturuyor, bu veritabanı için ayrı bir kullanıcı tanımlıyor ve kullanıcıya ihtiyaç duyduğu yetkileri veriyoruz.

Örneğimizin tamamını özetlersek:

sql
CREATE DATABASE drupal_site
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

CREATE USER 'drupal_user'@'localhost'
IDENTIFIED BY 'GucluBirSifreBuraya';

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES
ON `drupal_site`.*
TO 'drupal_user'@'localhost';

Bu bilgiler hazır olduğunda Drupal kurulum ekranında veritabanı bağlantısını tanımlayıp kuruluma devam edebiliriz.

Özellikle production ortamlarında Drupal'a root veritabanı kullanıcısını vermek yerine yalnızca ilgili proje veritabanına erişebilen ayrı bir kullanıcı kullanmak, hem yönetim hem de güvenlik açısından daha doğru bir yapı sağlar.

Son güncelleme: 18.09.2026 14:08