Geçiş sırasında veya geçiş sonrası sık karşılaşılan hatalarla MySQL için Azure Veritabanı
AŞAĞıDAKILER IÇIN GEÇERLIDIR:
MySQL için Azure Veritabanı - Tek Sunucu
MySQL için Azure Veritabanı - Esnek Sunucu
MySQL için Azure Veritabanı, MySQL'in topluluk sürümü tarafından desteklenen tam olarak yönetilen bir hizmettir. Yönetilen hizmet ortamındaki MySQL deneyimi, MySQL'i kendi ortamınıza çalıştırmadan farklı olabilir. Bu makalede, kullanıcıların ilk kez bir MySQL için Azure Veritabanı'a geçen veya geliştiren kullanıcılar tarafından karşılaşabilirsiniz.
Yaygın Bağlantı Hataları
HATA 1184 (08S01): Veritabanına 22 bağlantısı durduruldu: 'db-name' kullanıcı: 'user' ana bilgisayarı: 'hostIP' (init_connect komutu başarısız oldu)
Yukarıdaki hata, oturum açma başarılı olduktan sonra ancak oturum kurularak herhangi bir komut yürütülmeden önce oluşur. Yukarıdaki ileti, yanlış bir sunucu parametresi değeri ayarlanmış olduğunu ve bu nedenle oturum init_connect başlatmanın başarısız olduğunu gösterir.
Gibi bazı sunucu parametreleri oturum düzeyinde desteklenmiyor ve bu nedenle kullanarak bu parametrelerin değerlerini değiştirmeye çalışırken Aşağıda gösterildiği gibi MySQL sunucusuna bağlanırken Hata require_secure_transport init_connect 1184 ile sonuçlanabilirsiniz:
mysql> veritabanlarını göster; HATA 2006 (HY000): MySQL sunucusu bağlantı yok. Yeniden bağlanmaya çalış... Bağlantı kimliği: 64897 Geçerli veritabanı: Geçerli veritabanı: GEÇERLI YOK / HATA 1184 (08S01): 22 veritabanı bağlantısı durduruldu: 'db-name' kullanıcı: 'user' host: 'hostIP' (init_connect komutu başarısız oldu)
Çözüm: Sunucu parametreleri sekmesindeki değeri sıfırlayın Azure portal parametresini kullanarak yalnızca desteklenen init_connect sunucu init_connect ayarlayın.
SUPER ayrıcalığı ve DBA rolü eksikliğinden dolayı hatalar
SÜPER ayrıcalık ve DBA rolü hizmette desteklenmiyor. Sonuç olarak, aşağıda listelenen bazı yaygın hatalarla karşılaşabilirsiniz:
HATA 1419: SÜPER ayrıcalığınız yok ve ikili günlük etkinleştirildi (daha az güvenli günlük log_bin_trust_function_creators kullanabilirsiniz)
Yukarıdaki hata bir işlev oluşturulurken, aşağıda olduğu gibi tetiklenir veya şema içeri aktarıldı sırasında oluşabilir. CREATE FUNCTION veya CREATE TRIGGER gibi DDL deyimleri ikili günlüğe yazılır, böylece ikincil çoğaltma bunları yürütene kadar. Çoğaltma SQL iş parçacığı, ayrıcalıkları yükseltmek için yararlanılabilir tam ayrıcalıklara sahiptir. İkili günlüğe kaydetme etkinleştirilmiş sunucular için bu tehlikeye karşı koruma için, MySQL altyapısı saklı işlev oluşturucularının normal CREATE ROUTINE ayrıcalığına ek olarak SUPER ayrıcalığına sahip olduğunu gerektirir.
CREATE FUNCTION f1(i INT)
RETURNS INT
DETERMINISTIC
READS SQL DATA
BEGIN
RETURN i;
END;
Çözüm: Hatayı çözmek için portaldaki sunucu parametreleri dikey penceresinden 1 olarak ayarlayın, DDL deyimlerini yürütün veya istenen nesneleri oluşturmak için log_bin_trust_function_creators şemayı içeri aktarın. Gelecekte hatadan kaçınmak log_bin_trust_function_creators için sunucunuz için 1'i korumaya devam edersiniz. MySQL topluluk belgelerinde vurgulanan güvenlik riski en düşük düzeyde olduğu için MySQL için Azure Veritabanı günlüğü herhangi bir tehditlere maruz kalmay olarak log_bin_trust_function_creators ayarlamanız önerimizdir.
HATA 101. satırda 1227 (42000): Erişim reddedildi; Bu işlem için SÜPER ayrıcalıklara (en az bir) ihtiyacınız var. İşlem çıkış kodu 1 ile başarısız oldu
Yukarıdaki hata, döküm dosyası içeri aktarıldı veya tanımları içeren yordam oluşturulurken oluşabilir.
Çözüm: Bu hatayı çözmek için yönetici kullanıcı, aşağıdaki örneklerde olduğu gibi GRANT komutunu çalıştırarak yordam oluşturma veya yürütme ayrıcalıkları verilmiştir:
GRANT CREATE ROUTINE ON mydb.* TO 'someuser'@'somehost';
GRANT EXECUTE ON PROCEDURE mydb.myproc TO 'someuser'@'somehost';
Alternatif olarak, aşağıda gösterildiği gibi, definer'ları içeri aktarma işlemini çalıştıran yönetici kullanıcının adıyla değiştirebilirsiniz.
DELIMITER;;
/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`127.0.0.1`*/ /*!50003
DELIMITER;;
/* Modified to */
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`AdminUserName`@`ServerName`*/ /*!50003
DELIMITER ;
HATA 1227 (42000), satır 295: Erişim reddedildi; Bu işlem için SÜPER veya SET_USER_ID (en az biri) gerekir
Yukarıdaki hata, döküm dosyasını içeri aktarmanın veya betik çalıştırmanın bir parçası olarak DEFINER deyimleriyle CREATE VIEW yürüttükleri sırada oluşabilir. MySQL için Azure Veritabanı süper ayrıcalıklara veya kullanıcıya SET_USER_ID izin vermez.
Çözüm:
- Mümkünse CREATE VIEW yürütmek için tanımlayan kullanıcı kullanın. Farklı tanımcılar farklı izinlere sahip olan birçok görünüme sahip olabilir, bu nedenle bu mümkün olmayacaktır. VEYA
- Döküm dosyasını veya CREATE VIEW betiği düzenleyin ve döküm dosyasından DEFINER= deyimini kaldırın VEYA
- Döküm dosyasını veya CREATE VIEW betiği düzenleyin ve tanımıcı değerlerini içeri aktarmayı veya betik dosyasını yürüten yönetici izinleriyle değiştirin.
İpucu
Döküm dosyasını veya betiği defineR= deyimini SQL için sed veya perl kullanın
HATA 18. satırda 1227 (42000): Erişim reddedildi; Bu işlem için SÜPER ayrıcalıklara (en az bir) ihtiyacınız var
MySQL sunucusundan hedef sunucuya GTID etkinleştirilmiş döküm dosyasını içeri aktarmaya çalışıyorsanız yukarıdaki hata MySQL için Azure Veritabanı oluşabilir. Mysqldump, GTID'ler'in kullanımda olduğu bir sunucudan döküm dosyasına SET @ =0 deyimi ekler ve bu da döküm dosyası yeniden yüklenirken ikili günlüğü devre @SESSION.sql_log_bin dışı verir.
Çözüm: İçeri aktarma sırasında bu hatayı çözmek için mysqldump dosyanıza aşağıdaki satırları kaldırın veya açıklama satırı uygulayın ve başarılı olduğundan emin olmak için içeri aktarmayı yeniden çalıştırın.
SET @MYSQLDUMP_TEMP_LOG_BIN = @ @SESSION.SQL_LOG_BIN ; SET @ @SESSION.SQL_LOG_BIN = 0; SET @ @GLOBAL.GTID_PURGED =''; SET @ @SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN ;
Sunucu yöneticisi oturum açma sırasında sık karşılaşılan bağlantı hataları
Bir MySQL için Azure Veritabanı sunucusu oluşturulduğunda, sunucu oluşturma sırasında son kullanıcı tarafından sunucu yöneticisi oturum açma bilgileri sağlanır. Sunucu yöneticisi oturum açma, yeni veritabanları oluşturmanıza, yeni kullanıcılar eklemenize ve izinler atamanıza olanak sağlar. Sunucu yöneticisi oturum açma izni silinirse, izinleri iptal edilir veya parolası değiştirilirse, bağlantılar sırasında uygulamanıza bağlantı hataları görmeye başlayabilirsiniz. Sık karşılaşılan hatalardan bazıları aşağıda ve ve ardından ve ardından
HATA 1045 (28000): 'username'@'IP adresi' kullanıcısı için erişim reddedildi (parola kullanılarak: EVET)
Yukarıdaki hata şu durumda oluşur:
- Kullanıcı adı yok.
- Kullanıcı kullanıcı adı silindi.
- parolası değiştirilir veya sıfırlanır.
Çözüm:
"Kullanıcı adı"nın sunucuda geçerli bir kullanıcı olarak mevcut olduğunu veya yanlışlıkla silindi olduğunu doğrulayın. Aşağıdaki sorguyu yürütmek için kullanıcı MySQL için Azure Veritabanı çalıştırabilirsiniz:
select user from mysql.user;Yukarıdaki sorgunun kendisini yürütmek için MySQL'de oturum asanız, Azure portal kullanarak yönetici parolasını sıfırlamanız önerilir. Azure portal parola sıfırlama seçeneği, kullanıcı yeniden oluşturmanıza, parolayı sıfırlamanıza ve yönetici izinlerini geri yüklemeye yardımcı olur. Bu seçenek, sunucu yöneticisini kullanarak oturum açmanıza ve başka işlemler gerçekleştirmenizi sağlar.
Sonraki adımlar
Bulmak istediğiniz yanıtı bulamadıysanız aşağıdaki seçenekleri göz önünde bulun:
- Microsoft Q&soru sayfasına veya sayfasına Stack Overflow.
- MySQL için Azure Veritabanı Team @Ask MySQL için Azure DB. Bu e-posta adresi teknik destek diğer adı değil.
- Azure Desteği iletişim kurarak Azure portal. Hesabınızla ilgili bir sorun gidermek için Azure portalda bir destek isteği oluşturun.
- Görüş bildirmek veya yeni özellikler istemek için UserVoice aracılığıyla bir giriş oluşturun.