aaPanel’de MySQL ve yedekleme içinde kendi cron’unu kullanıyorsanız bazı durumlarda cron’un çalışmadığını fark edebilirsiniz. Bu durumun neden ve nasıl oluştuğunu bilmiyorum ama sorunun kendisi ve çözümü oldukça basit.
Sorunu çözmek için önce tam olarak neyin sorun çıkardığını anlayıp ardından bu durumu ortadan kaldırmamız gerekiyor. Bu yazıda bahsedeceğim ve en sık karşılaşılan sorun ise cron’un veritabanına erişememe sorunu.
Sorun: Cron’un veritabanına iç IP’den erişememesi
Çözüme geçmeden önce sorunun bu yazıda belirtilen iç IP sorunu olduğuna emin olmanız gerekiyor. Bunun için aaPanel’de cron’un yanındaki log seçeğine tıklayarak loglarda Access denied for user 'root'@'127.0.0.1'
yazısının olduğundan emin olur. Bu hata mesajını görüyosanız sorunumuz cron’un kullandığı user’ın 127.0.0.1 iç IP’sinden veritabanına ulaşmaya çalıştığında yetkisi olmadığı gerekçesiyle reddedilmesi.
Burada UNIX socket sorunu var. Root kullanıcısı veritabanına localhost üzerinden erişebilirken 127.0.0.1 üzerinden erişemiyor ve cron’da iç IP üzerinden DB’ye erişip yedekleri almaya çalıştığı için bağlantı sorunu yaşıyor.
Çözüm: Veritabanına 127.0.0.1 ile bağlanma yetkisi verme
Yapılması gereken işlem çok kısa ve basit. Öncelikle aaPanel’de Database sayfasına girip MySQL root şifremizi öğreniyoruz. Ardından SSH ile MySQL’e root şifremizle giriş yapıyoruz ve aşağıdaki komutları çalıştırıyoruz.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ROOT ŞİFRENİZİ YAZIN'; CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'ROOT ŞİFRENİZİ YAZIN'; GRANT ALL PRIVILEGES ON . TO 'root'@'127.0.0.1' WITH GRANT OPTION; FLUSH PRIVILEGES;
Komutları çalıştırmadan önce “ROOT ŞİFRENİZİ YAZIN” kısımlarına kendi MySQL root şifrenizi yazmanız gerekiyor. Bu sayede root kullanıcısına hem localhost hem de 127.0.0.1 iç IP’si ile MySQL’e bağlanma izni vermiş olduk.
Bu işlemden sonra SSH bağlantınızı sonlandırıp aaPanel üzerinden DB yedekleme cron’ununu tekrar çalıştırarak sonucu kontrol edebilirsiniz.
Cron’u manuel olarak çalıştırmak için cron listesinde ilgili cron’un sağ tarafında yazan “Execute” linkine tıklamanız gerekiyor. Ardından cron loglarını tekrar kontrol edip her şeyin yolunda olduğunu teyit edin.
Siz de fikrinizi belirtin