Làm cách nào để tắt xác thực mật khẩu mysql?


153

Có vẻ như tôi đã vô tình tải plugin xác thực mật khẩu trong MySQL 5.7. Plugin này dường như buộc tất cả các mật khẩu tuân thủ các quy tắc nhất định.

Tôi muốn tắt cái này đi.

Tôi đã thử thay đổi biến validate_password_length như được đề xuất ở đây để không có kết quả.

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

Tôi muốn tải plugin hoặc trung tính bằng cách nào đó.


9
Bạn đã thử thay đổi cài đặt chính sách chưa? SET GLOBAL validate_password_policy=LOW;
Rikki

1
SET GLOBAL validate_password.policy=LOW;
belgacea

Câu trả lời:


430

Dưới đây là những gì tôi làm để xóa plugin xác thực mật khẩu:

  1. Đăng nhập vào máy chủ mysql bằng root mysql -h localhost -u root -p
  2. Chạy lệnh sql sau: uninstall plugin validate_password;
  3. Nếu dòng cuối cùng không hoạt động (bản phát hành mysql mới), bạn nên thực thi UNINSTALL COMPONENT 'file://component_validate_password';

Tôi sẽ không đề xuất giải pháp này cho một hệ thống sản xuất. Tôi đã sử dụng giải pháp này trên một ví dụ mysql cục bộ cho mục đích phát triển.


18
để kích hoạt lại lần nữa, hãy sử dụng lệnh sau: INSTALL PLUGIN validate_password SONAME 'validate_password.so';
vchrizz

8
Để xóa plugin, bạn sẽ cần thiết lập mật khẩu an toàn ít nhất một lần qua grep 'password' /var/log/mysqld.log | tail -1và sau đó /usr/bin/mysql_secure_installation. Sau khi làm như vậy, bạn có thể chạy các lệnh từ srayhunter ở trên rồi chạy mysqladmin -u root -p'oldpassword' password newpassđể sử dụng bất kỳ mật khẩu nào bạn muốn.
Specialk1

2
Plugin được gọi cracklib_password_checktrong MariaDB hiện tại.
czerny

27
Lưu ý: Trong MySQL 8.0.4, plugin validate_password đã được triển khai lại dưới dạng thành phần validate_password. Thay vì truy vấn số 2 ở trên, hãy chạy:UNINSTALL COMPONENT 'file://component_validate_password';
Aaron Cicali

4
mysql> SET GLOBAL validate_password_policy = 0;
JREAM

41

Tôi đang sử dụng MySQL v 8.0.12 và lệnh để vô hiệu hóa thành phần xác thực mật khẩu là:

UNINSTALL COMPONENT 'file://component_validate_password';

Để cài đặt lại, lệnh là:

INSTALL COMPONENT 'file://component_validate_password';

Nếu bạn chỉ muốn thay đổi chính sách của plugin xác thực mật khẩu:

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

Dựa trên câu trả lời từ Sharfi, chỉnh sửa tệp /etc/my.cnf và chỉ thêm một dòng này:

validate_password_policy=LOW

Điều đó sẽ đủ trung tính xác nhận theo yêu cầu của OP. Bạn có thể sẽ muốn khởi động lại mysqld sau khi thay đổi này. Tùy thuộc vào hệ điều hành của bạn, nó sẽ trông giống như:

sudo service mysqld restart

validate_password_policy lấy các giá trị 0, 1 hoặc 2 hoặc các từ THẤP, TRUNG BÌNH và MẠNH tương ứng với các số đó. Mặc định là MEDIUM (1) yêu cầu mật khẩu chứa ít nhất một chữ cái viết hoa, một chữ cái viết thường, một chữ số và một ký tự đặc biệt và tổng độ dài mật khẩu ít nhất là 8 ký tự. Thay đổi thành THẤP như tôi đề xuất ở đây sau đó sẽ chỉ kiểm tra độ dài, nếu nó không được thay đổi thông qua các tham số khác sẽ kiểm tra độ dài 8. Nếu bạn muốn rút ngắn giới hạn độ dài đó, bạn cũng có thể thêm xác thực_password_length vào tập tin my.cnf.

Để biết thêm thông tin về các cấp độ và chi tiết, xem tài liệu mysql .


Đối với MySQL 8, thuộc tính đã thay đổi từ "validate_password_policy" thành "validate_password.policy". Xem tài liệu mysql cập nhật để biết thông tin mới nhất.


6
Nếu bạn chỉ cần một thay đổi tạm thời, để cho phép một mật khẩu được đặt, bạn có thể sử dụngSET GLOBAL validate_password_policy=LOW;
Rikki

1
Đây là một giải pháp tốt hơn so với việc loại bỏ các mô-đun chính nó.
Mrugesh Mology

2
mysql: biến không xác định 'validate_password_policy = THẤP'
Amalgovinus

2
Có vẻ như tên biến đã thay đổi trong MySQL mới nhất. @Amalgovinus, hãy thử sử dụng tên biến "validate_password.policy" và xem điều đó có hiệu quả với bạn không. Và nếu có, tôi sẽ cập nhật câu trả lời của mình.
ktbos

6

Để vô hiệu hóa kiểm tra mật khẩu trong mariadb-10.1.24 (Fedora 24) Tôi đã phải nhận xét một dòng trong tệp /etc/my.cnf.d/cracklib_password_check.cnf :

;plugin-load-add=cracklib_password_check.so

sau đó khởi động lại dịch vụ mariadb:

systemctl restart mariadb.service

4

Bạn có thể định cấu hình tệp này trong tệp cấu hình mở /etc/my.cnftệp mysql Trong tệp này, tất cả các dòng đang định cấu hình chính sách mật khẩu sẽ khiến những người đó nhận xét như

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

Uncomment và thay đổi giá trị của các thuộc tính bạn muốn thay đổi.


2

Nếu bạn muốn tạo ra ngoại lệ, bạn có thể áp dụng "hack" sau đây. Nó đòi hỏi người dùng có DELETEINSERTđặc quyền cho mysql.pluginbảng hệ thống.

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

Từ chối trách nhiệm bảo mật nhạt nhẽo: Hãy xem xét, tại sao bạn lại làm cho mật khẩu của mình ngắn hơn hoặc dễ dàng hơn và có thể xem xét thay thế nó bằng mật khẩu phức tạp hơn. Tuy nhiên, tôi hiểu khoảnh khắc "đó là 3 giờ sáng và chỉ cần làm việc", chỉ cần đảm bảo rằng bạn không xây dựng một hệ thống hack, kẻo chính bạn sẽ bị hack


2

Thêm vào câu trả lời từ ktbos:

Tôi đã sửa đổi tệp mysqld.cnf và mysql không khởi động được. Hóa ra tôi đã sửa đổi tập tin sai!

Vì vậy, hãy chắc chắn rằng tệp bạn sửa đổi chứa các thẻ phân đoạn như [mysqld_safe] và [mysqld]. Theo sau tôi đã làm như đề xuất và thêm dòng:

validate_password_policy=LOW

Điều này hoạt động hoàn hảo để giải quyết vấn đề của tôi về việc không yêu cầu các ký tự đặc biệt trong mật khẩu.


1

Gỡ cài đặt:

mysql> uninstall plugin validate_password;

Một plugin đã gỡ cài đặt không được hiển thị bởi show plugins;

Tải về:

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

Vô hiệu hóa bởi cấu hình:

[mysqld]
validate_password = OFF

Một plugin có thể bị vô hiệu hóa bởi cấu hình chỉ khi được cài đặt.


0

Tôi đã gặp sự cố trên Ubuntu 18.04 trên Mysql. Khi tôi cần tạo một người dùng mới, chính sách luôn cao.

Cách tôi tìm ra cách vô hiệu hóa, đối với các đồng nghiệp tương lai đến để điều tra, đã được đặt ở mức thấp.

Đăng nhập vào máy chủ mysql bằng root

mysql -h localhost -u root -p

Đặt loại xác nhận mới

SET GLOBAL validate_password_policy=0; //For Low

Khởi động lại mysql

sudo service mysql restart

1
Bạn phải viết lệnh "SET ..." này vào shell mysql. Không bash vỏ.
kodmanyagha

0

Trên một số cài đặt, bạn không thể thực thi lệnh này cho đến khi bạn đã đặt lại mật khẩu gốc. Bạn không thể thiết lập lại mật khẩu gốc, cho đến khi bạn thực hiện lệnh này. Bắt cổ điển-22.

Một giải pháp không được đề cập bởi những người phản hồi khác là tạm thời vô hiệu hóa plugin thông qua cấu hình mysql. Trong bất kỳ my.cnf, trong [mysqld]phần, thêm:

skip-validate_password=1

và khởi động lại máy chủ. Thay đổi mật khẩu và đặt giá trị trở về 0 và khởi động lại.


cái này không hoạt động. Bạn có thể đề cập đến phiên bản mysql này áp dụng cho?
Dave Doga Oz

0

Để tham khảo và trong tương lai, người ta nên đọc tài liệu ở đây https://dev.mysql.com/doc/mysql-secure-deployment-guide/5.7/en/secure-deployment-password-validation.html

Sau đó, bạn nên chỉnh sửa mysqld.cnftệp của mình , ví dụ:

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

Sau đó, thêm vào phần [mysqld], như sau:

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

Về cơ bản, nếu bạn chỉnh sửa mặc định của mình, nó sẽ trông như sau:

[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

Sau đó, bạn có thể khởi động lại:

systemctl restart mysql

Nếu bạn quên plugin-load-add=validate_password.sophần này, bạn sẽ gặp lỗi khi khởi động lại.

Thưởng thức !


-1

Đối với mysql 8.0.7, hãy chuyển đến thư mục mysql của bạn, rồi sử dụng:

sudo bin/mysql_secure_installation

để cấu hình tùy chọn mật khẩu.


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

không cần dừng / khởi động mysql

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.