Son zamanlarda, veritabanını rpm ile kurduktan ve şifreyi değiştirdikten sonra bir hatayla karşılaştım: ERROR 1819 (HY000): Şifreniz mevcut politika gereksinimlerini karşılamıyor, aşağıdaki hatırlatma olarak sorunun ve çözüm sürecinin basit bir kaydı!
Aşağıdakiler işletim sistemi centos7.3'e dayanmaktadır, mysql sürümü gösterim için 5.7.24'tür.
Şekilde gösterildiği gibi, şifre değiştirilirken bir hata rapor edilir:
Güvenliği artırmak için MySQL 5.7, kök kullanıcı için rastgele bir parola üretir Hata günlüğünde, RPM paketi yüklüyse, hata günlüğünün konumu ile ilgili olarak varsayılan değer /var/log/mysqld.log'dur.
İlk kez oturum açarken parola basit bir parola ile değiştirilirse, aşağıdaki hata bildirilecektir:
mysql > '12345678' TARAFINDAN TANIMLANAN ALTER KULLANICI KULLANICI (); HATA 1819 (HY000): Şifreniz mevcut politika gereksinimlerini karşılamıyorBu aslında validate_password_policy'nin değeriyle ilgilidir.
Validate_password_policy aşağıdaki değerlere sahiptir:
Varsayılan değer ORTA olan 1'dir, bu nedenle başlangıçta ayarlanan parola uzunluğu karşılamalı ve sayılar, küçük veya büyük harfler ve özel karakterler içermelidir.
Bazen sadece kendi testim için şifreyi bu kadar karmaşık ayarlamak istemiyorum Örneğin, sadece root şifresini 123456 olarak ayarlamak istiyorum.
İki genel parametre değiştirilmelidir:
İlk olarak, validate_password_policy parametresinin değerini değiştirin
mysql > global validate_password_policy = 0 olarak ayarlayın; Sorgu TAMAM, 0 satır etkilendi (0,00 saniye)Bu şekilde, şifreyi değerlendirme kriteri şifrenin uzunluğuna bağlıdır. Bu, validate_password_length parametresi tarafından belirlenir.
mysql > @@ validate_password_length öğesini seçin; + ---------------------------- + | @@ validate_password_length | + ---------------------------- + | 8 | + ---------------------------- + Sette 1 satır (0,00 sn)Validate_password_length parametresinin varsayılan değeri, minimum sınırı olan 8'dir, minimum değer:
validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)Bunların arasında, validate_password_number_count paroladaki verilerin uzunluğunu belirtir, validate_password_special_char_count paroladaki özel karakterlerin uzunluğunu belirtir ve validate_password_mixed_case_count paroladaki büyük ve küçük harflerin uzunluğunu belirtir.
Bu parametrelerin varsayılan değeri 1'dir, dolayısıyla validate_password_length'in minimum değeri 4'tür. Validate_password_length değerinin 4'ten küçük olduğunu açıkça belirtirseniz, herhangi bir hata rapor edilmemesine rağmen, validate_password_length değeri 4 olarak ayarlanacaktır. Aşağıdaki gibi:
mysql > @@ validate_password_length öğesini seçin; + ---------------------------- + | @@ validate_password_length | + ---------------------------- + | 8 | + ---------------------------- + Sette 1 satır (0,00 sn) mysql > global validate_password_length = 1 olarak ayarlayın; Sorgu TAMAM, 0 satır etkilendi (0,00 saniye) mysql > @@ validate_password_length öğesini seçin; + ---------------------------- + | @@ validate_password_length | + ---------------------------- + | 4 | + ---------------------------- + Sette 1 satır (0,00 sn)Validate_password_number_count, validate_password_special_char_count, validate_password_mixed_case_count değerlerinden herhangi biri değiştirilirse, validate_password_length dinamik olarak değiştirilecektir.
mysql > @@ validate_password_length öğesini seçin; + ---------------------------- + | @@ validate_password_length | + ---------------------------- + | 4 | + ---------------------------- + Sette 1 satır (0,00 sn) mysql > @@ validate_password_mixed_case_count öğesini seçin; + -------------------------------------- + | @@ validate_password_mixed_case_count | + -------------------------------------- + | 1 | + -------------------------------------- + Sette 1 satır (0,00 sn) mysql > global validate_password_mixed_case_count = 2 olarak ayarlayın; Sorgu TAMAM, 0 satır etkilendi (0,00 saniye) mysql > @@ validate_password_mixed_case_count öğesini seçin; + -------------------------------------- + | @@ validate_password_mixed_case_count | + -------------------------------------- + | 2 | + -------------------------------------- + Sette 1 satır (0,00 sn) mysql > @@ validate_password_length öğesini seçin; + ---------------------------- + | @@ validate_password_length | + ---------------------------- + | 6 | + ---------------------------- + Sette 1 satır (0,00 sn)Tabii ki, öncül, validate_password eklentisinin yüklenmiş olması gerektiğidir ve MySQL5.7 varsayılan olarak kurulur.
Peki, validate_password eklentisinin kurulu olup olmadığı nasıl doğrulanır? Aşağıdaki parametreleri kontrol edebilirsiniz, kurulu değilse çıkış boş olacaktır.
mysql > DEĞİŞKENLERİ GİBİ GÖSTER'validate_password% '; + -------------------------------------- + ------- + | Değişken_adı | Değer | + -------------------------------------- + ------- + | validate_password_dictionary_file | | validate_password_length | 6 | | validate_password_mixed_case_count | 2 | | validate_password_number_count | 1 | | validate_password_policy | DÜŞÜK | | validate_password_special_char_count | 1 | + -------------------------------------- + ------- + Sette 6 sıra (0.00 sn)Yukarıdakiler çok açık bir şekilde açıklandı, bu yüzden burada sadece şunları yapmam gerekiyor:
Set global validate_password_policy = 0 çözülebilir. Aşağıdaki gibi:
şifreyi başarıyla değiştir.
Ayrıca mysql5.7 şifre değiştirme stratejisinin ne olduğunu görmek için kendiniz de test edebilirsiniz. Daha sonra daha fazla DBA içeriği paylaşacağız ve ilgilenen arkadaşlar buna dikkat edebilir ~