Hata Nedir ve Neden Olur?
Birkaç yaygın sebep:
1. Yanlış Kullanıcı Adı veya Şifre: En basit ve en yaygın nedenlerden biri budur.
2. Kullanıcıya Veritabanı Erişimi Verilmemiş Olabilir: Veritabanını yöneten kişi, kullanıcıya uygun izinleri vermemiş olabilir.
3. Yanlış Bağlantı Bilgileri: Bağlantı bilgileri, IP adresi veya sunucu adı yanlış olabilir.
4. Yetki Eksiklikleri: Veritabanı kullanıcısının sadece belirli IP adreslerinden erişim izni olabilir.
Adım 1: Kullanıcı Bilgilerini Kontrol Edin
Kontrol Edilmesi Gerekenler:
- Kullanıcı adı ve şifreyi doğru girdiğinizden emin olun.
- Sunucunun IP adresinin doğru olduğundan emin olun.
- Eğer bir bağlantı stringi kullanıyorsanız, "localhost" yerine doğru sunucu adresini kullandığınızdan emin olun.
Adım 2: Kullanıcıya Yetki Verme
kopyalaGRANT ALL PRIVILEGES ON `veritabani_adı`.* TO 'kullanici_adı'@'%' IDENTIFIED BY 'sifre'; FLUSH PRIVILEGES;
Bu komutla, belirttiğiniz kullanıcıya tüm izinleri veriyorsunuz. `%` işareti, kullanıcının tüm IP adreslerinden bağlantı kurmasına izin verir.
Adım 3: MySQL Kullanıcı İzinlerini Güncelleme
kopyalaREVOKE ALL PRIVILEGES ON *.* FROM 'kullanici_adı'@'%'; FLUSH PRIVILEGES;
Bu komut, kullanıcının tüm izinlerini kaldıracak ve sonra yeniden izin vermenizi sağlayacaktır.
Adım 4: MySQL Sunucu Yapılandırmasını Kontrol Edin
Sunucunun dış bağlantılara izin verip vermediğini kontrol etmek için şu dosyayı düzenleyin:
```bash
/etc/mysql/my.cnf
```
Bu dosyada `bind-address` parametresinin değerinin `127.0.0.1` değil, sunucunuzun IP adresi veya `0.0.0.0` olması gerektiğini kontrol edin.
```bash
bind-address = 0.0.0.0
```
Değişiklikleri yaptıktan sonra MySQL servisini yeniden başlatmanız gerekecek:
kopyalasudo service mysql restart
Adım 5: Şifreyi Yeniden Sıfırlama
1. MySQL servisini durdurun:
kopyalasudo service mysql stop
2. MySQL'i güvenli modda başlatın:
kopyalasudo mysqld_safe --skip-grant-tables &
3. Yeni bir terminal açın ve MySQL'e bağlanın:
kopyalamysql -u root
4. Şifreyi sıfırlayın:
kopyalaUSE mysql; UPDATE user SET password=PASSWORD('yeni_sifre') WHERE User='kullanici_adı'; FLUSH PRIVILEGES;
5. MySQL'i yeniden başlatın:
kopyalasudo service mysql start
Sonuç
Unutmayın, her şeyin temelinde doğru bağlantı bilgileri ve kullanıcı izinleri vardır. Eğer bir şey yolunda gitmiyorsa, her zaman ilk başta bu detayları kontrol edin.