Kata sandi Anda tidak memenuhi persyaratan kebijakan saat ini


148

Saya ingin membuat pengguna baru di mysql dengan sintaks:

create user 'demo'@'localhost' identified by 'password';

Tapi itu mengembalikan kesalahan:

Kata sandi Anda tidak memenuhi persyaratan kebijakan saat ini.

Saya sudah mencoba banyak kata sandi tetapi tidak berhasil. Bagaimana saya bisa memperbaikinya?


1
Atur level kebijakan kata sandi lebih rendah. Lihatlah di sini: dev.mysql.com/doc/refman/5.6/en/…
Fjarlaegur

4
Apa yang diatur dengan kebijakan kata sandi Anda? Anda dapat memeriksa variabel yang telah diatur untuk modul validasi kata sandi Anda menggunakanSHOW VARIABLES LIKE 'validate_password%'
JNevill

Terima kasih! Saya mengatur level kebijakan kata sandi lebih rendah dan berfungsi.
Nguyen

1
Saya memecahkan masalah saya menggunakanUNINSTALL COMPONENT 'file://component_validate_password';
princebillyGK

Jawaban:


244

Karena kata sandi Anda. Anda dapat melihat kata sandi memvalidasi metrik konfigurasi menggunakan kueri berikut di klien MySQL:

SHOW VARIABLES LIKE 'validate_password%';

Outputnya harus seperti itu:

+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password.check_user_name    | ON    |
| validate_password.dictionary_file    |       |
| validate_password.length             | 6     |
| validate_password.mixed_case_count   | 1     |
| validate_password.number_count       | 1     |
| validate_password.policy             | LOW   |
| validate_password.special_char_count | 1     |
+--------------------------------------+-------+

maka Anda dapat mengatur level kebijakan kata sandi lebih rendah, misalnya:

SET GLOBAL validate_password.length = 6;
SET GLOBAL validate_password.number_count = 0;

periksa Dokumentasi MySQL .


31
Anda harus mengutip dokumentasi MySQL resmi , bukan video YouTube, demi Tuhan.
Marquis of Lorne

26
Gunakan perintah berikut untuk menggunakan 'kata sandi' sebagai Kata Sandi untuk mesin pengembangan:SET GLOBAL validate_password_policy = 0;
Mahmudul Hasan Shohag

4
SET GLOBAL validate_password.length = 6; SET GLOBAL validate_password.number_count = 0; TERDAMPAK !!
BeatingBytes

6
hanya sajaSET GLOBAL validate_password.policy = 0;
iamtodor

1
Ini sangat membantu karena itu benar-benar menunjukkan kepada saya mengapa kata sandi panjang 30 karakter saya "lemah" (tidak ada karakter khusus). Saya dapat menghapus persyaratan karakter khusus dan meningkatkan panjang minimum dari 8 menjadi 20.
andrewtweber

68

CATATAN: Ini mungkin bukan solusi yang aman. Tetapi jika Anda bekerja pada lingkungan pengujian, hanya perlu perbaikan cepat dan bahkan tidak peduli dengan pengaturan keamanan. Ini solusi cepat.

Masalah yang sama terjadi pada saya ketika saya menjalankan "mysql_secure_installation" dan mengubah tingkat keamanan kata sandi menjadi 'sedang'.

Saya memintas kesalahan dengan menjalankan yang berikut ini:

mysql -h localhost -u root -p
mysql>uninstall plugin validate_password;

pastikan Anda menginstal ulang plugin "validate_password" jika perlu.


3
Solusi mengerikan. Anda harus menurunkan level sesuai keinginan Anda, bukan menghapus seluruh fasilitas.
Marquis of Lorne

10
terima kasih sudah memposting. perbaikan cepat dan kotor. seperti yang dikatakan @kennyut: pastikan Anda menginstal ulang plugin "validate_password"
Meng Zhao

52

Jika Anda tidak peduli apa kebijakan kata sandi itu. Anda dapat mengaturnya ke RENDAH dengan mengeluarkan perintah mysql di bawah ini:

mysql> SET GLOBAL validate_password_policy=LOW;

8
harus SET GLOBAL validate_password.policy=LOW;sebaliknya
songyy

22

Untuk MySQL 8 *

SET GLOBAL validate_password.policy=LOW

Referensi Tautan untuk menjelaskan tentang kebijakan - Klik Di Sini


20

Setelah menjalankan perintah sudo mysql_secure_installation.

  1. Jalankan sudo mysqluntuk masuk ke prompt mysql.
  2. Jalankan ini SELECT user,authentication_string,plugin,host FROM mysql.user;untuk memeriksa root pengguna untuk memiliki plugin auth_socket .
  3. Kemudian jalankan uninstall plugin validate_password;untuk membatalkan hak istimewa sebelum menjalankan ini. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Pastikan untuk mengubah kata sandi menjadi kata sandi yang kuat.

CATATAN: lihat tautan ini https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04 untuk bantuan lebih lanjut


11

Anda harus mengubah kebijakan kata sandi MySQL menjadi RENDAH.

login sebagai root

mysql -u root -p

ubah kebijakan

SET GLOBAL validate_password_policy=LOW;

atau

SET GLOBAL validate_password_policy=0;

keluar

exit

restart layanan MySQL

sudo service mysqld restart

Anda harus mengubah kebijakan kata sandi MySQL ke Rendah = 0 / Sedang = 1 / Tinggi = 2.

SET GLOBAL validate_password_policy=0;
SET GLOBAL validate_password_policy=1;    
SET GLOBAL validate_password_policy=2;

8

Untuk MySql 8 Anda dapat menggunakan skrip berikut:

SET GLOBAL validate_password.LENGTH = 4;
SET GLOBAL validate_password.policy = 0;
SET GLOBAL validate_password.mixed_case_count = 0;
SET GLOBAL validate_password.number_count = 0;
SET GLOBAL validate_password.special_char_count = 0;
SET GLOBAL validate_password.check_user_name = 0;
ALTER USER 'user'@'localhost' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;

7

Menurut pendapat saya, pengaturan "validate_password_policy" menjadi "low" atau menghapus instalan "validate password plugin" bukanlah hal yang tepat untuk dilakukan. Anda tidak boleh berkompromi dengan keamanan basis data Anda (kecuali jika Anda tidak terlalu peduli). Saya bertanya-tanya mengapa orang bahkan menyarankan opsi ini ketika Anda hanya dapat memilih kata sandi yang baik.

Untuk mengatasi masalah ini, saya menjalankan perintah berikut di mysql: TAMPILKAN VARIABEL SEPERTI 'validate_password%' seperti yang disarankan oleh @JNevill. "Validate_password_policy" saya disetel ke Sedang, bersama dengan hal-hal lain. Ini adalah screenshot pelaksanaannya: Validasi Kebijakan Kata Sandi

Hasilnya cukup jelas. Untuk kata sandi yang valid (ketika kebijakan kata sandi disetel ke media):

  • Panjang kata sandi minimal harus 8 karakter
  • Jumlah kasus campuran adalah 1 (Setidaknya 1 huruf kecil dan 1 huruf besar)
  • Jumlah hitungan adalah 1
  • Jumlah karakter khusus minimum adalah 1

Jadi kata sandi yang valid harus mematuhi kebijakan. Contoh kata sandi yang valid untuk aturan di atas mungkin:

  • Student123 @
  • NINZAcoder $ 100
  • demoPass # 00

Anda dapat memilih kombinasi apa saja selama memenuhi kebijakan.

Untuk "validate_password_policy" lainnya, Anda cukup melihat nilai untuk opsi yang berbeda dan memilih kata sandi yang sesuai (Saya belum mencoba "KUAT" ).

https://dev.mysql.com/doc/refman/5.6/en/validate-password-options-variables.html


2
KUAT untuk kebijakan kata sandi teratas.
Steam gamer

Saya juga tidak mengerti orang yang menyarankan untuk downgrade validate_password_policyke LOW. Pengguna dapat dengan sempurna membuat atau menghasilkan kata sandi yang kuat yang memenuhi persyaratan. Jika Anda tidak yakin bagaimana melakukannya, gunakan alat untuk itu. Misalnya github.com/joseluisq/rpasswd
joseluisq

3

Langkah 1: periksa plugin autentikasi default Anda

SHOW VARIABLES LIKE 'default_authentication_plugin';

Langkah 2: sangat memenuhi persyaratan validasi kata sandi Anda

SHOW VARIABLES LIKE 'validate_password%';

Langkah 3: mengatur pengguna Anda dengan persyaratan kata sandi yang benar

CREATE USER '<your_user>'@'localhost' IDENTIFIED WITH '<your_default_auth_plugin>' BY 'password';

3

Saya memiliki Masalah yang sama dan Jawabannya Tepat di depan Anda, ingat ketika Anda menjalankan skrip saat menginstal mysql seperti

sudo mysql_secure_installation

di suatu tempat Anda memilih jenis kata sandi yang ingin Anda pilih

Ada tiga tingkat kebijakan validasi kata sandi:

Panjang RENDAH> = 8 Panjang MENENGAH> = 8, angka, huruf besar, dan karakter khusus KUAT Panjang> = 8, angka, huruf besar, karakter khusus dan file kamus

Silakan masukkan 0 = RENDAH, 1 = MENENGAH dan 2 = KUAT:

Anda harus memberikan kata sandi untuk kebijakan yang sama

berikut ini beberapa contoh contoh kata sandi Anda:
untuk tipe 0: abcdabcd
untuk tipe 1: abcd1234
untuk tipe 2:ancd@1234


2

Untuk pengguna Laravel yang memiliki masalah ini dengan MySQL 8.0.x, tambahkan

'modes'=> [
             'ONLY_FULL_GROUP_BY',
             'STRICT_TRANS_TABLES',
             'NO_ZERO_IN_DATE',
             'NO_ZERO_DATE',
             'ERROR_FOR_DIVISION_BY_ZERO',
             'NO_ENGINE_SUBSTITUTION',
            ],

ke file database.php Anda seperti di bawah ini:

// database.php

    'connections' => [

        'mysql' => [
            'driver'      => 'mysql',
            'host'        => env( 'DB_HOST', '127.0.0.1' ),
            'port'        => env( 'DB_PORT', '3306' ),
            'database'    => env( 'DB_DATABASE', 'forge' ),
            'username'    => env( 'DB_USERNAME', 'forge' ),
            'password'    => env( 'DB_PASSWORD', '' ),
            'unix_socket' => env( 'DB_SOCKET', '' ),
            'charset'     => 'utf8mb4',
            'collation'   => 'utf8mb4_unicode_ci',
            'prefix'      => '',
            'strict'      => true,
            'engine'      => null,
            'modes'       => [
                'ONLY_FULL_GROUP_BY',
                'STRICT_TRANS_TABLES',
                'NO_ZERO_IN_DATE',
                'NO_ZERO_DATE',
                'ERROR_FOR_DIVISION_BY_ZERO',
                'NO_ENGINE_SUBSTITUTION',
            ],
        ],
    ],

Memperbaikinya untuk saya.


2

Masalahnya adalah kata sandi Anda tidak akan cocok dengan aturan validasi kata sandi. Anda dapat mengikuti langkah-langkah di bawah ini untuk menyelesaikan masalah Anda.

Anda cukup melihat matriks konfigurasi validasi kata sandi dengan mengetikkan kode di bawah ini.

mysql-> SHOW VARIABLES LIKE 'validate_password%';

Kemudian dalam matriks Anda, Anda dapat menemukan variabel di bawah ini dengan nilai yang sesuai dan di sana Anda harus memeriksa validate_password_length, validate_password_number_countdan validate_password_policy.

Periksa nilai yang digunakan untuk variabel-variabel tersebut. Pastikan Anda validate_password_lengthtidak boleh lebih dari 6. Anda dapat mengatur ke 6 dengan menggunakan kode di bawah ini.

SET GLOBAL validate_password_length = 6;

Dan setelah itu Anda perlu mengatur validate_password_number_countke 0. Lakukan dengan menggunakan kode di bawah ini.

SET GLOBAL validate_password_number_count = 0;

Akhirnya Anda harus membuat Anda validate_password_policyuntuk low. Memiliki itu sebagai Mediumatau Hightidak akan membiarkan kata sandi Anda kurang aman. Setel itu lowdengan kode di bawah ini.

SET GLOBAL validate_password_policy=LOW;

1

Tetapkan kata sandi yang memenuhi 7 aturan validasi MySql

misalnya:- d_VX>N("xn_BrD2y

Membuat kriteria validasi sedikit lebih sederhana akan menyelesaikan masalah

SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;

Tetapi disarankan kata sandi yang kuat adalah solusi yang benar


0

Pesan kesalahan ini tidak ada hubungannya dengan kata sandi yang tersimpan di tabel Anda. Ini juga terjadi jika Anda mengetik (pada konsol SQL)

"pilih kata sandi ('123456789')"

atau jika

"pilih kata sandi ('A123456789')"

atau jika

"pilih kata sandi ('A! 123456789')"

Jika Anda mengetik

"pilih kata sandi ('A! a123456789')"

maka itu akan berhasil. Cukup gunakan huruf besar + kecil, karakter khusus, dan angka untuk membuat kata sandi Anda.

Anda dapat menonaktifkan pemeriksaan ini di my.cnf, tetapi kemudian Anda akan memiliki risiko keamanan!

di [mysqld] tambahkan:

validate_password_policy=LOW
validate_password_special_char_count=0
validate_password_length=0
validate_password_mixed_case_count=0
validate_password_number_count=0

0

tidak berfungsi untuk saya di ubsqld instal baru ubuntu, harus menambahkan ini: ke /etc/mysql/mysql.conf.d/mysqld.cnf atau server tidak mau memulai (tebak plugin tidak memuat di waktu yang tepat ketika saya hanya menambahkannya tanpa direktif add-plugin-load)

plugin-load-add=validate_password.so
validate_password_policy=LOW
validate_password_length=8
validate_password_mixed_case_count=0
validate_password_number_count=0
validate_password_special_char_count=0

0

Ada beberapa saat di mana menemukan solusi cepat sangat bagus. Tetapi jika Anda dapat menghindari pembatasan kata sandi yang rendah, ini dapat mencegah Anda mengalami sakit kepala besar di masa mendatang.

Tautan berikutnya adalah dari dokumentasi resmi https://dev.mysql.com/doc/refman/5.6/en/validate-password.html , tempat mereka mengekspos contoh persis seperti yang Anda miliki, dan mereka menyelesaikannya.

Satu-satunya masalah yang Anda miliki adalah kata sandi Anda tidak cukup kuat untuk memenuhi kebijakan minimum aktual (tidak disarankan untuk dihapus). Jadi Anda dapat mencoba kata sandi yang berbeda seperti yang Anda lihat pada contoh.


0

TAMPILKAN VARIABEL SEPERTI 'validate_password%';

masukkan deskripsi gambar di sini

mysql> SET GLOBAL validate_password.length = 6;

mysql> SET GLOBAL validate_password.number_count = 0;

mysql> SET GLOBAL validate_password.policy = RENDAH;

TAMPILKAN VARIABEL SEPERTI 'validate_password%';

masukkan deskripsi gambar di sini


-1
mysql> SET GLOBAL validate_password.policy = 0;

1
Meskipun kode ini dapat menyelesaikan masalah OP, yang terbaik adalah menyertakan penjelasan tentang bagaimana kode Anda mengatasi masalah OP. Dengan cara ini, pengunjung masa depan dapat belajar dari pos Anda, dan menerapkannya pada kode mereka sendiri. SO bukan layanan pengkodean, tetapi sumber daya untuk pengetahuan. Juga, kualitas tinggi, jawaban lengkap lebih cenderung terunggulkan. Fitur-fitur ini, bersama dengan persyaratan bahwa semua posting mandiri, adalah beberapa kekuatan SO sebagai platform, yang membedakannya dari forum. Anda dapat mengedit untuk menambahkan info tambahan & / atau untuk melengkapi penjelasan Anda dengan dokumentasi sumber.
SherylHohman
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.