Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
MySQL istemcisinde veritabanı oluşturmak için CREATE yetkisi bulunan bir hesapla bağlanıp CREATE DATABASE komutunu çalıştırın. Uygulamanızın doğru metinleri saklaması için karakter kümesini ve karşılaştırma düzenini açıkça belirtmek iyi bir başlangıçtır. Veritabanını oluşturmak, otomatik olarak herhangi bir kullanıcıya erişim izni vermez; kullanıcı yetkileri ayrıca tanımlanmalıdır.

Karakter kümesi ve collation seçimi​


utf8mb4, Unicode karakterleri ve dört bayta kadar UTF-8 karakterlerini desteklediği için genel uygulama verileri açısından uygun bir tercihtir. COLLATE bölümü ise metinlerin nasıl karşılaştırılacağını ve sıralanacağını belirler. Örneğin utf8mb4_unicode_ci büyük-küçük harf ayrımını önemsemeyen genel bir karşılaştırma düzenidir.

Collation seçimi yalnızca veritabanı oluşturulurken yapılmaz; tablo, sütun veya sorgu düzeyinde farklı bir collation kullanılabilir. Bu nedenle uygulamanın arama ve sıralama beklentisiyle uyumlu bir seçim yapın. Bir collation sunucunuzda bulunmuyorsa MySQL hata verir; bu durumda sunucuda desteklenen bir utf8mb4 collation seçilmelidir.

Çalıştırılabilir temel örnek​


Aşağıdaki örnek, MySQL istemcisinde yönetim yetkisi olan bir hesapla çalıştırılmak üzere hazırlanmıştır. Veritabanı adı yalnızca harf, rakam ve alt çizgi içerecek şekilde seçilmiştir.

  1. Komut satırında MySQL istemcisini çalıştırın: mysql -u admin -p. Buradaki admin örnek hesap adıdır; kendi yetkili hesabınızı kullanın. Parola sorulduğunda hesabın parolasını girin.
  2. İstemci açıldıktan sonra aşağıdaki SQL kodunu çalıştırın:

Kod:
CREATE DATABASE IF NOT EXISTS `ornek_uygulama`
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

SHOW CREATE DATABASE `ornek_uygulama`;

Başarılı işlemden sonra ilk komut bir başarı mesajı verir; ikinci komut şemanın adını ve gerçek oluşturma varsayılanlarını gösterir. IF NOT EXISTS kullanıldığı için veritabanı zaten varsa yeni bir hata yerine mevcut yapı korunur ve uyarı oluşabilir. İstenen yeni collation, var olan şemanın varsayılanını bu komutla değiştirmez; SHOW CREATE DATABASE çıktısını bu yüzden okuyun. Bu ifade tabloları oluşturmaz ve mevcut verileri değiştirmez.

Yetki hedefiKapsamÖrnek
SunucuTüm veritabanları ve sunucu düzeyi işlemler*.*
VeritabanıTek bir şemadaki tablolarornek_uygulama.*
TabloYalnızca belirtilen tabloornek_uygulama.musteriler


Oluşturulan şemayı listeleme ve seçme​


Tüm erişilebilir veritabanlarını görmek için istemcide SHOW DATABASES; çalıştırılır. Yalnızca belirli şemayı kontrol etmek için SHOW DATABASES LIKE 'ornek_uygulama'; kullanılabilir. Bir veritabanının listede görünmemesi her zaman oluşturulmadığı anlamına gelmez; MySQL, kullanıcının görme yetkisi olmayan veritabanlarını listelemeyebilir.

Oluşturulan şemayı sonraki SQL işlemlerinin hedefi yapmak için şu komutu kullanın:

Kod:
USE `ornek_uygulama`;
SELECT DATABASE();

SELECT DATABASE(); sonucu ornek_uygulama ise istemcinin geçerli çalışma şeması doğru seçilmiştir.

Erişim yetkilerinin kapsamı​


Veritabanı oluşturma yetkisi ile oluşturulan veritabanını kullanma yetkisi farklıdır. Uygulama için ayrı bir kullanıcı oluşturulması ve yalnızca gerekli şemaya yetki verilmesi tercih edilir. Yetkinin kapsamı, GRANT ifadesindeki nesneyle belirlenir:

Uygulama kullanıcısına yalnızca gerekli veritabanında yetki vermek için yönetici hesabıyla örneğin şu komutlar çalıştırılabilir:

Kod:
CREATE USER 'uygulama_user'@'localhost'
  IDENTIFIED BY 'DegistirilecekGucluParola';

GRANT SELECT, INSERT, UPDATE, DELETE
  ON `ornek_uygulama`.*
  TO 'uygulama_user'@'localhost';

Örnekteki parola temsilidir; her kurulumda kendinize özgü güçlü bir gizli değerle değiştirilmelidir. Bu hesabın verilen DML izinleri tablo kurma veya şema taşıma yetkisi içermez; göç işlemlerinin yetkilerini ayrıca planlayın.

Buradaki 'localhost' bağlantının kabul edileceği istemci konumunu da tanımlar. Uygulama başka bir sunucudan bağlanıyorsa bu hesap eşleşmeyebilir; bağlantı kaynağına uygun ve mümkün olduğunca dar bir host tanımı kullanılmalıdır. Kullanıcı oluşturma veya yetki verme işlemleri için hesabınızda ilgili yönetim yetkileri bulunmalıdır.

Sık yapılan hatalar​


  • Veritabanını oluşturduktan sonra otomatik yetki verildiğini varsaymak. Uygulama kullanıcısına ayrıca GRANT verilmelidir.
  • Veritabanı adında boşluk veya kabukta özel anlam taşıyan karakterler kullanmak. Basit adlar tercih edin ve gerektiğinde MySQL tanımlayıcılarını ters tırnakla yazın.
  • Sunucuda bulunmayan bir collation seçmek. Hata alırsanız sunucunun desteklediği collation listesini SHOW COLLATION LIKE 'utf8mb4%'; ile inceleyin.
  • cPanel barındırmasında panel tarafından verilen ad ve kullanıcı ön eklerini yok sayarak hesap yönetimini SQL ile atlatmaya çalışmak. Bu ortamlarda veritabanı, kullanıcı ve eşleştirme işlemlerini hosting panelinin sağladığı araçlarla yönetin; SQL istemcisi yalnızca panelin izin verdiği bağlantı ve yetki sınırları içinde kullanılmalıdır.

Sık sorulan sorular​

USE komutu başka bağlantının çalışma şemasını da değiştirir mi?​

Hayır. Geçerli bağlantının varsayılan şemasını seçer. Uygulamanız yeni bağlantı açtığında kendi bağlantı ayarındaki şemayı seçmelidir. Bir yönetici oturumunda USE çalıştırmak, bütün uygulamaların hangi veritabanına bağlanacağını ayarlamaz.

Varsayılan collation değişirse eski tablolar otomatik dönüşür mü?​

Hayır. Şema varsayılanı ile mevcut tablo ve sütunların tanımı farklı katmanlardır. Önce gerçek tanımları inceleyin; eski verinin dönüştürülmesi ayrı bir şema değişikliği olabilir. Yalnız yeni şema oluşturma komutunu çalıştırarak eski karşılaştırma davranışını düzelttiğinizi varsaymayın.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.