ฉันจะปิดการตรวจสอบรหัสผ่าน mysql ได้อย่างไร


153

ดูเหมือนว่าฉันอาจโหลดปลั๊กอินการตรวจสอบรหัสผ่านใน MySQL 5.7 โดยไม่ได้ตั้งใจ ปลั๊กอินนี้ดูเหมือนว่าจะบังคับให้รหัสผ่านทั้งหมดปฏิบัติตามกฎบางอย่าง

ฉันต้องการปิดการทำงานนี้

ฉันได้ลองเปลี่ยนตัวแปร validate_password_length ตามที่แนะนำที่นี่แล้วเพื่อประโยชน์

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

ฉันต้องการที่จะยกเลิกการโหลดปลั๊กอินหรือเพศมันอย่างใด


9
คุณลองเปลี่ยนการตั้งค่านโยบายหรือไม่ SET GLOBAL validate_password_policy=LOW;
Rikki

1
SET GLOBAL validate_password.policy=LOW;
belgacea

คำตอบ:


431

นี่คือสิ่งที่ฉันทำเพื่อลบปลั๊กอินรหัสผ่านที่ตรวจสอบ:

  1. ลงชื่อเข้าใช้เซิร์ฟเวอร์ mysql ในฐานะรูท mysql -h localhost -u root -p
  2. รันคำสั่ง sql ต่อไปนี้: uninstall plugin validate_password;
  3. หากบรรทัดสุดท้ายใช้งานไม่ได้ (mysql ใหม่ออกมา) คุณควรดำเนินการ UNINSTALL COMPONENT 'file://component_validate_password';

ฉันจะไม่แนะนำวิธีแก้ปัญหานี้สำหรับระบบการผลิต ฉันใช้วิธีนี้กับอินสแตนซ์ mysql ในพื้นที่เพื่อการพัฒนาเท่านั้น


18
หากต้องการเปิดใช้งานอีกครั้งให้ใช้คำสั่งต่อไปนี้: INSTALL PLUGIN validate_password SONAME 'validate_password.so';
vchrizz

8
ในการลบปลั๊กอินที่คุณจะต้องตั้งค่ารหัสผ่านที่ปลอดภัยอย่างน้อยหนึ่งครั้งผ่านทางแล้วgrep 'password' /var/log/mysqld.log | tail -1 /usr/bin/mysql_secure_installationหลังจากทำเช่นนั้นคุณสามารถเรียกใช้คำสั่งจาก srayhunter ด้านบนแล้วเรียกmysqladmin -u root -p'oldpassword' password newpassใช้รหัสผ่านใด ๆ ที่คุณต้องการ
specialk1st

2
ปลั๊กอินถูกเรียกcracklib_password_checkใน MariaDB ปัจจุบัน
czerny

27
หมายเหตุ: ใน MySQL 8.0.4 ปลั๊กอิน validate_password ได้รับการปรับใช้ใหม่เป็นองค์ประกอบ validate_password แทนที่จะค้นหา # 2 ด้านบนให้เรียกใช้:UNINSTALL COMPONENT 'file://component_validate_password';
Aaron Cicali

4
mysql> SET GLOBAL validate_password_policy = 0;
JREAM

41

ฉันใช้ MySQL v 8.0.12 และคำสั่งเพื่อปิดใช้งานองค์ประกอบการตรวจสอบรหัสผ่านคือ:

UNINSTALL COMPONENT 'file://component_validate_password';

หากต้องการติดตั้งอีกครั้งคำสั่งคือ:

INSTALL COMPONENT 'file://component_validate_password';

หากคุณต้องการเปลี่ยนนโยบายของปลั๊กอินตรวจสอบรหัสผ่าน:

SET GLOBAL validate_password.policy = 0;   // For LOW
SET GLOBAL validate_password.policy = 1;   // For MEDIUM
SET GLOBAL validate_password.policy = 2;   // For HIGH

34

สร้างคำตอบจาก Sharfi แก้ไขไฟล์ /etc/my.cnf และเพิ่มเพียงบรรทัดเดียว:

validate_password_policy=LOW

นั่นควรเพียงพอที่จะตรวจสอบความถูกต้องตามที่ OP ต้องการ คุณอาจต้องการเริ่ม mysqld ใหม่หลังจากการเปลี่ยนแปลงนี้ มันจะมีลักษณะดังนี้:

sudo service mysqld restart

validate_password_policy รับค่า 0, 1 หรือ 2 หรือคำ LOW, MEDIUM และ STRONG ซึ่งสอดคล้องกับตัวเลขเหล่านั้น ค่าเริ่มต้นคือ MEDIUM (1) ซึ่งต้องใช้รหัสผ่านที่มีตัวอักษรตัวพิมพ์ใหญ่อย่างน้อยหนึ่งตัวอักษรตัวพิมพ์เล็กหนึ่งตัวตัวอักษรหนึ่งตัวและตัวอักษรพิเศษหนึ่งตัวและความยาวรหัสผ่านทั้งหมดอย่างน้อย 8 ตัวอักษร เปลี่ยนเป็น LOW ตามที่ฉันแนะนำที่นี่จากนั้นจะตรวจสอบความยาวเท่านั้นซึ่งหากไม่ได้เปลี่ยนผ่านพารามิเตอร์อื่น ๆ จะตรวจสอบความยาว 8 หากคุณต้องการตัดทอนขีดจำกัดความยาวนั้นด้วยคุณสามารถเพิ่ม validate_password_length เป็น ไฟล์ my.cnf

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับระดับและรายละเอียดโปรดดูเอกสารข้อมูล MySQL


สำหรับ MySQL 8 คุณสมบัติได้เปลี่ยนจาก "validate_password_policy" เป็น "validate_password.policy" ดูเอกสาร mysql ที่อัปเดตสำหรับข้อมูลล่าสุด


6
หากคุณต้องการการเปลี่ยนแปลงชั่วคราวเพื่ออนุญาตให้ตั้งรหัสผ่านเดียวคุณสามารถใช้SET GLOBAL validate_password_policy=LOW;
Rikki

1
นี่เป็นทางออกที่ดีกว่าการลบโมดูลเอง
Mrugesh Mistry

2
mysql: ตัวแปรที่ไม่รู้จัก 'validate_password_policy = LOW'
Amalgovinus

2
ดูเหมือนว่าชื่อตัวแปรมีการเปลี่ยนแปลงใน MySQL ล่าสุด @Amalgovinus ลองใช้ชื่อตัวแปร "validate_password.policy" แทนและดูว่าเหมาะกับคุณหรือไม่ และถ้าเป็นเช่นนั้นฉันจะอัปเดตคำตอบของฉัน
ktbos

6

ในการปิดการใช้งานการตรวจสอบรหัสผ่านใน mariadb-10.1.24 (Fedora 24) ฉันต้องคอมเม้นท์หนึ่งบรรทัดในไฟล์/etc/my.cnf.d/cracklib_password_check.cnf :

;plugin-load-add=cracklib_password_check.so

จากนั้นเริ่มบริการ mariadb ใหม่:

systemctl restart mariadb.service

4

คุณสามารถกำหนดค่านี้ในไฟล์กำหนดค่า mysql เปิด/etc/my.cnfไฟล์ในไฟล์นี้ทุกบรรทัดที่มีการกำหนดค่านโยบายรหัสผ่านทำให้ผู้ที่แสดงความคิดเห็นเช่น

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

ยกเลิกหมายเหตุและเปลี่ยนค่าของคุณสมบัติที่คุณต้องการเปลี่ยน


2

หากคุณต้องการยกเว้นคุณสามารถใช้ "แฮ็ค" ต่อไปนี้ มันต้องการผู้ใช้ที่มีDELETEและINSERTสิทธิ์สำหรับmysql.pluginตารางระบบ

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

ข้อจำกัดความรับผิดชอบด้านความปลอดภัยที่สุภาพ: พิจารณาว่าทำไมคุณถึงทำให้รหัสผ่านของคุณสั้นลงหรือง่ายขึ้นและอาจลองแทนที่ด้วยรหัสที่ซับซ้อนกว่า อย่างไรก็ตามฉันเข้าใจว่า "มันเป็นเวลาตี 3 และเพียงต้องทำงาน" เพียงแค่ตรวจสอบให้แน่ใจว่าคุณไม่ได้สร้างระบบแฮ็กเพื่อไม่ให้คุณถูกแฮ็ก


2

เพิ่มเติมจากคำตอบของ ktbos:

ฉันแก้ไขไฟล์ mysqld.cnf และ mysql ไม่สามารถเริ่มต้นได้ ปรากฎว่าฉันแก้ไขไฟล์ผิด!

ดังนั้นให้แน่ใจว่าไฟล์ที่คุณแก้ไขมีแท็กกลุ่มเช่น [mysqld_safe] และ [mysqld] ภายใต้หลังฉันทำตามที่แนะนำและเพิ่มบรรทัด:

validate_password_policy=LOW

สิ่งนี้ทำงานได้อย่างสมบูรณ์ในการแก้ไขปัญหาของฉันโดยไม่ต้องใช้อักขระพิเศษภายในรหัสผ่าน


1

ถอนการติดตั้ง:

mysql> uninstall plugin validate_password;

ปลั๊กอินที่ถอนการติดตั้งจะไม่ปรากฏขึ้น show plugins;

ติดตั้ง:

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

ปิดใช้งานโดยการกำหนดค่า:

[mysqld]
validate_password = OFF

ปลั๊กอินสามารถปิดการใช้งานโดยการกำหนดค่าเฉพาะในกรณีที่ติดตั้ง


0

ฉันมีปัญหากับ Ubuntu 18.04 ใน Mysql เมื่อฉันต้องการสร้างผู้ใช้ใหม่นโยบายก็สูงเสมอ

วิธีที่ฉันคิดวิธีปิดการใช้งานสำหรับเพื่อนร่วมงานในอนาคตที่มาตรวจสอบนั้นถูกตั้งค่าให้อยู่ในระดับต่ำ

ลงชื่อเข้าใช้เซิร์ฟเวอร์ mysql ในฐานะรูท

mysql -h localhost -u root -p

ตั้งค่าการตรวจสอบประเภทใหม่

SET GLOBAL validate_password_policy=0; //For Low

รีสตาร์ท mysql

sudo service mysql restart

1
คุณต้องเขียนคำสั่ง "SET ... " นี้ลงในเชลล์ mysql อย่าทุบตีเปลือก
kodmanyagha

0

ในการติดตั้งบางรายการคุณไม่สามารถดำเนินการคำสั่งนี้จนกว่าคุณจะรีเซ็ตรหัสผ่านรูท คุณไม่สามารถรีเซ็ตรหัสผ่านรูทจนกว่าคุณจะรันคำสั่งนี้ คลาสสิก Catch-22

ทางออกหนึ่งที่ไม่ได้กล่าวถึงโดยผู้ตอบแบบสอบถามรายอื่นคือการปิดใช้งานปลั๊กอินชั่วคราวผ่านการกำหนดค่า mysql ในที่ใด ๆmy.cnfใน[mysqld]ส่วนที่เพิ่ม:

skip-validate_password=1

และรีสตาร์ทเซิร์ฟเวอร์ เปลี่ยนรหัสผ่านและตั้งค่ากลับเป็น 0 และเริ่มใหม่อีกครั้ง


มันไม่ทำงาน คุณช่วยพูดถึงเวอร์ชั่นของ mysql นี้ได้ไหม?
Dave Doga Oz

0

สำหรับการอ้างอิงและอนาคตผู้อ่านควรอ่านเอกสารได้ที่นี่https://dev.mysql.com/doc/mysql-secure-deployment-guide/5.7/en/secure-deployment-password-validation.html

จากนั้นคุณควรแก้ไขmysqld.cnfไฟล์ของคุณตัวอย่างเช่น:

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

จากนั้นเพิ่มในส่วน [mysqld] ดังต่อไปนี้:

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

โดยทั่วไปหากคุณแก้ไขค่าเริ่มต้นของคุณจะมีลักษณะดังนี้:

[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

จากนั้นคุณสามารถรีสตาร์ท:

systemctl restart mysql

หากคุณลืมplugin-load-add=validate_password.soส่วนหนึ่งคุณจะพบข้อผิดพลาดเมื่อรีสตาร์ท

สนุก !


-1

สำหรับ mysql 8.0.7 ไปที่ไดเรกทอรี mysql ของคุณแล้วใช้:

sudo bin/mysql_secure_installation

เพื่อกำหนดค่าตัวเลือกรหัสผ่าน


-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;

ไม่จำเป็นต้องหยุด / เริ่ม mysql

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.