Bagaimana cara mematikan validasi kata sandi mysql?

153

Tampaknya saya mungkin secara tidak sengaja memuat plugin validasi kata sandi di MySQL 5.7. Plugin ini tampaknya memaksa semua kata sandi untuk mematuhi aturan tertentu.

Saya ingin mematikan ini.

Saya sudah mencoba mengubah variabel validate_password_length seperti yang disarankan di sini tetapi tidak berhasil.

mysql> SET GLOBAL validate_password_length=4;
Query OK, 0 rows affected (0.00 sec)

mysql> SET PASSWORD FOR 'app' = PASSWORD('abcd');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

Saya ingin membongkar plugin atau membinasakannya.

Alex Ryan
sumber
9
Sudahkah Anda mencoba mengubah pengaturan kebijakan? SET GLOBAL validate_password_policy=LOW;
Rikki
1
SET GLOBAL validate_password.policy=LOW;
belgacea

Jawaban:

430

Inilah yang saya lakukan untuk menghapus plugin kata sandi yang valid:

  1. Login ke server mysql sebagai root mysql -h localhost -u root -p
  2. Jalankan perintah sql berikut: uninstall plugin validate_password;
  3. Jika baris terakhir tidak berfungsi (rilis mysql baru), Anda harus menjalankannya UNINSTALL COMPONENT 'file://component_validate_password';

Saya tidak akan merekomendasikan solusi ini untuk sistem produksi. Saya menggunakan solusi ini pada contoh mysql lokal untuk tujuan pengembangan saja.

Ray Hunter
sumber
18
untuk mengaktifkannya kembali, gunakan perintah berikut: INSTALL PLUGIN validate_password SONAME 'validate_password.so';
vchrizz
8
Untuk menghapus plugin Anda perlu mengatur kata sandi aman setidaknya sekali melalui grep 'password' /var/log/mysqld.log | tail -1dan kemudian /usr/bin/mysql_secure_installation. Setelah melakukannya, Anda dapat menjalankan perintah dari srayhunter di atas kemudian jalankan mysqladmin -u root -p'oldpassword' password newpassuntuk menggunakan kata sandi yang Anda inginkan.
specialk1st
2
Plugin ini disebut cracklib_password_checkdalam MariaDB saat ini.
czerny
27
Catatan: Di MySQL 8.0.4, plugin validate_password diimplementasikan kembali sebagai komponen validate_password. Alih-alih permintaan # 2 di atas, jalankan:UNINSTALL COMPONENT 'file://component_validate_password';
Aaron Cicali
4
mysql> SET GLOBAL validate_password_policy = 0;
JREAM
41

Saya menggunakan MySQL v 8.0.12 dan perintah untuk menonaktifkan komponen validasi kata sandi adalah:

UNINSTALL COMPONENT 'file://component_validate_password';

Untuk menginstalnya kembali, perintahnya adalah:

INSTALL COMPONENT 'file://component_validate_password';

Jika Anda hanya ingin mengubah kebijakan plugin validasi kata sandi:

SET GLOBAL validate_password.policy = 0;   // For LOW
SET GLOBAL validate_password.policy = 1;   // For MEDIUM
SET GLOBAL validate_password.policy = 2;   // For HIGH
Akshay Gaur
sumber
34

Membangun jawaban dari Sharfi, edit file /etc/my.cnf dan tambahkan baris ini:

validate_password_policy=LOW

Itu harus cukup mensterilkan validasi seperti yang diminta oleh OP. Anda mungkin ingin me-restart mysqld setelah perubahan ini. Tergantung pada OS Anda, itu akan terlihat seperti:

sudo service mysqld restart

validate_password_policy mengambil nilai 0, 1, atau 2 atau kata RENDAH, SEDANG, dan KUAT yang sesuai dengan angka-angka itu. Standarnya adalah MENENGAH (1) yang memerlukan kata sandi berisi setidaknya satu huruf besar, satu huruf kecil, satu digit, dan satu karakter khusus, dan total panjang kata sandi minimal 8 karakter. Mengubah ke RENDAH seperti yang saya sarankan di sini maka hanya akan memeriksa panjang, yang jika belum diubah melalui parameter lain akan memeriksa panjang 8. Jika Anda ingin mempersingkat batas panjang juga, Anda juga bisa menambahkan validate_password_length ke file my.cnf.

Untuk info lebih lanjut tentang level dan detail, lihat dokumen mysql .


Untuk MySQL 8, properti telah berubah dari "validate_password_policy" menjadi "validate_password.policy". Lihat dokumen mysql yang diperbarui untuk info terbaru.

ktbos
sumber
6
Jika Anda hanya perlu perubahan sementara, untuk memungkinkan satu kata sandi diset, Anda dapat menggunakanSET GLOBAL validate_password_policy=LOW;
Rikki
1
Ini adalah solusi yang lebih baik daripada melepas modul itu sendiri.
Mrugesh Mistry
2
mysql: variabel tidak dikenal 'validate_password_policy = LOW'
Amalgovinus
2
Sepertinya nama variabel telah berubah di MySQL terbaru. @Amalgovinus, coba gunakan nama variabel "validate_password.policy" sebagai gantinya dan lihat apakah itu cocok untuk Anda. Dan jika ya, saya akan memperbarui jawaban saya.
ktbos
6

Untuk menonaktifkan pemeriksaan kata sandi di mariadb-10.1.24 (Fedora 24), saya harus mengomentari baris di file /etc/my.cnf.d/cracklib_password_check.cnf :

;plugin-load-add=cracklib_password_check.so

kemudian mulai kembali layanan mariadb:

systemctl restart mariadb.service
lav
sumber
4

Anda dapat mengkonfigurasi ini di file konfigurasi mysql file terbuka /etc/my.cnfDi file ini semua baris yang mengkonfigurasi kebijakan kata sandi membuat mereka berkomentar seperti

#validate-password=FORCE_PLUS_PERMANENT
#validate_password_length=10
#validate_password_mixed_case_count=1
#validate_password_number_count=1
#validate_password_policy=MEDIUM

Batalkan komentar dan ubah nilai properti yang ingin Anda ubah.

Sharfi
sumber
2

Jika Anda ingin membuat pengecualian, Anda dapat menerapkan "retasan" berikut. Ini membutuhkan pengguna dengan DELETEdan INSERThak istimewa untuk mysql.plugintabel sistem.

uninstall plugin validate_password;
SET PASSWORD FOR 'app' = PASSWORD('abcd');
INSTALL PLUGIN validate_password SONAME 'validate_password.so';

Penafian keamanan Bland: Pertimbangkan, mengapa Anda membuat kata sandi Anda lebih pendek atau lebih mudah dan mungkin mempertimbangkan untuk menggantinya dengan yang lebih kompleks. Namun, saya mengerti momen "ini jam 3 pagi dan hanya perlu bekerja", pastikan Anda tidak membangun sistem peretasan, jangan sampai Anda sendiri diretas

SeanDowney
sumber
2

Lebih jauh ke jawaban dari ktbos:

Saya memodifikasi file mysqld.cnf dan mysql gagal memulai. Ternyata saya memodifikasi file yang salah!

Jadi pastikan file yang Anda modifikasi mengandung tag segmen seperti [mysqld_safe] dan [mysqld]. Di bawah yang terakhir saya lakukan seperti yang disarankan dan menambahkan baris:

validate_password_policy=LOW

Ini berfungsi dengan baik untuk menyelesaikan masalah saya karena tidak memerlukan karakter khusus dalam kata sandi.

Paul Pritchard
sumber
1

Copot pemasangan:

mysql> uninstall plugin validate_password;

Plugin yang dihapus tidak ditampilkan oleh show plugins;

Install:

mysql> install plugin validate_password SONAME 'validate_password.so';

Dinonaktifkan oleh konfigurasi:

[mysqld]
validate_password = OFF

Plugin dapat dinonaktifkan dengan konfigurasi hanya jika diinstal.

Antonio Bardazzi
sumber
0

Saya mengalami masalah di Ubuntu 18.04 di Mysql. Ketika saya perlu membuat pengguna baru, kebijakan itu selalu tinggi.

Cara saya menemukan cara menonaktifkan, untuk kolega masa depan yang datang untuk menyelidiki, ditetapkan rendah.

Login ke server mysql sebagai root

mysql -h localhost -u root -p

Tetapkan tipe validasi baru

SET GLOBAL validate_password_policy=0; //For Low

Mulai ulang mysql

sudo service mysql restart
vic.py
sumber
1
Anda harus menulis perintah "SET ..." ini ke shell mysql. Tidak untuk bash shell.
kodmanyagha
0

Pada beberapa instalasi, Anda tidak dapat menjalankan perintah ini sampai Anda mengatur ulang kata sandi root. Anda tidak dapat mengatur ulang kata sandi root, hingga Anda menjalankan perintah ini. Classic Catch-22.

Salah satu solusi yang tidak disebutkan oleh responden lain adalah menonaktifkan sementara plugin melalui konfigurasi mysql. Dalam setiap my.cnf, di [mysqld]bagian, tambahkan:

skip-validate_password=1

dan restart server. Ubah kata sandi, dan atur nilainya kembali ke 0, dan mulai lagi.

Otheus
sumber
ini tidak berhasil. Bisakah Anda menyebutkan versi mysql mana ini berlaku?
Dave Doga Oz
0

Untuk referensi dan masa depan, seseorang harus membaca dokumen di sini https://dev.mysql.com/doc/mysql-secure-deployment-guide/5.7/en/secure-deployment-password-validation.html

Maka Anda harus mengedit mysqld.cnffile Anda , misalnya:

vim /etc/mysql/mysql.conf.d/mysqld.cnf

Kemudian, tambahkan di bagian [mysqld], yang berikut ini:

plugin-load-add=validate_password.so
validate_password_policy=LOW

Pada dasarnya, jika Anda mengedit default Anda, itu akan terlihat seperti:

[mysqld]
#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
plugin-load-add=validate_password.so
validate_password_policy=LOW

Kemudian, Anda dapat memulai kembali:

systemctl restart mysql

Jika Anda lupa plugin-load-add=validate_password.sobagian, Anda akan mengalami kesalahan saat restart.

Nikmati !

gabrielstuff
sumber
-1

Untuk mysql 8.0.7, Buka direktori mysql Anda, dan kemudian gunakan:

sudo bin/mysql_secure_installation

untuk mengkonfigurasi opsi kata sandi.

J Tang
sumber
-2
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'organizer'@'localhost'  WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'organizer'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

tidak perlu berhenti / mulai mysql

Pravin
sumber