- Konu sahibi
- #1
MySQL istemcisinde veritabanı oluşturmak için CREATE yetkisi bulunan bir hesapla bağlanıp
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
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.
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.
Tüm erişilebilir veritabanlarını görmek için istemcide
Oluşturulan şemayı sonraki SQL işlemlerinin hedefi yapmak için şu komutu kullanın:
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ı,
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:
Ö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
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.
- 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. - İ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 hedefi | Kapsam | Örnek |
|---|---|---|
| Sunucu | Tüm veritabanları ve sunucu düzeyi işlemler | *.* |
| Veritabanı | Tek bir şemadaki tablolar | ornek_uygulama.* |
| Tablo | Yalnızca belirtilen tablo | ornek_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
GRANTverilmelidir. - 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.