Mật khẩu của bạn không đáp ứng các yêu cầu chính sách hiện tại


148

Tôi muốn tạo một người dùng mới trong mysql bằng cú pháp:

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

Nhưng nó trả về một lỗi:

Mật khẩu của bạn không đáp ứng các yêu cầu chính sách hiện tại.

Tôi đã thử nhiều mật khẩu nhưng chúng không hoạt động. Làm thế nào tôi có thể sửa lỗi này?


1
Đặt mức chính sách mật khẩu thấp hơn. Hãy xem tại đây: dev.mysql.com/doc/refman/5.6/en/ Kẻ
Fjarlaegur

4
Chính sách mật khẩu của bạn được thiết lập là gì? Bạn có thể kiểm tra các biến đã được thiết lập cho mô-đun xác thực mật khẩu của mình bằng cách sử dụngSHOW VARIABLES LIKE 'validate_password%'
JNevill

Cảm ơn! Tôi đặt mức chính sách mật khẩu thấp hơn và nó hoạt động.
Nguyễn

1
Tôi đã giải quyết vấn đề của mình bằng cách sử dụngUNINSTALL COMPONENT 'file://component_validate_password';
princebillyGK

Câu trả lời:


244

Vì mật khẩu của bạn. Bạn có thể thấy mật khẩu xác thực số liệu cấu hình bằng cách sử dụng truy vấn sau trong máy khách MySQL:

SHOW VARIABLES LIKE 'validate_password%';

Đầu ra phải giống như thế:

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

sau đó bạn có thể đặt mức chính sách mật khẩu thấp hơn, ví dụ:

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

kiểm tra Tài liệu MySQL .


31
Bạn nên trích dẫn tài liệu chính thức của MySQL , không phải video YouTube, vì lợi ích của trời.
Hầu tước Lorne

26
Sử dụng lệnh sau để sử dụng 'mật khẩu' làm Mật khẩu cho máy phát triển:SET GLOBAL validate_password_policy = 0;
Mahmudul Hasan Shohag

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

6
đúng hơnSET GLOBAL validate_password.policy = 0;
iamtodor

1
Điều này rất hữu ích vì nó thực sự cho tôi thấy tại sao mật khẩu dài 30 ký tự của tôi lại "yếu" (không có ký tự đặc biệt). Tôi đã có thể xóa yêu cầu ký tự đặc biệt và tăng độ dài tối thiểu từ 8 lên 20.
andrewtweber

68

LƯU Ý: Đây có thể không phải là một giải pháp an toàn. Nhưng nếu bạn đang làm việc trên môi trường thử nghiệm, chỉ cần sửa chữa nhanh và thậm chí không quan tâm đến cài đặt bảo mật. Đây là một giải pháp nhanh chóng.

Vấn đề tương tự cũng xảy ra với tôi khi tôi chạy "mysql_secure_installation" và sửa đổi mức bảo mật mật khẩu thành 'trung bình'.

Tôi đã bỏ qua lỗi bằng cách chạy các bước sau:

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

đảm bảo bạn cài đặt lại plugin "validate_password" nếu cần.


3
Giải pháp khủng khiếp. Bạn nên hạ thấp mức độ phù hợp với bạn, không loại bỏ toàn bộ cơ sở.
Hầu tước Lorne

10
Cảm ơn vì đăng. sửa chữa nhanh và bẩn. giống như những gì @kennyut nói: hãy đảm bảo bạn đã cài đặt lại plugin "validate_password"
Mạnh Triệu

52

Nếu bạn không quan tâm chính sách mật khẩu là gì. Bạn có thể đặt nó ở mức THẤP bằng cách phát hành bên dưới lệnh mysql:

mysql> SET GLOBAL validate_password_policy=LOW;

8
nên SET GLOBAL validate_password.policy=LOW;thay thế
songyy

22

Dành cho MySQL 8 *

SET GLOBAL validate_password.policy=LOW

Liên kết tham khảo để giải thích về chính sách - Bấm vào đây


20

Sau khi chạy lệnh sudo mysql_secure_installation.

  1. Chạy sudo mysqlđể nhập vào dấu nhắc mysql.
  2. Chạy phần này SELECT user,authentication_string,plugin,host FROM mysql.user;để kiểm tra root người dùng có plugin auth_socket .
  3. Sau đó, hãy chạy uninstall plugin validate_password;để thả các đặc quyền trước khi chạy này ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Hãy chắc chắn thay đổi mật khẩu thành một mật khẩu mạnh.

LƯU Ý: kiểm tra liên kết này https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubfox-18-04 để được trợ giúp thêm


11

Bạn phải thay đổi chính sách mật khẩu MySQL thành THẤP.

đăng nhập bằng root

mysql -u root -p

thay đổi chính sách

SET GLOBAL validate_password_policy=LOW;

hoặc là

SET GLOBAL validate_password_policy=0;

lối ra

exit

khởi động lại dịch vụ MySQL

sudo service mysqld restart

Bạn phải thay đổi chính sách mật khẩu MySQL thành Thấp = 0 / Trung bình = 1 / Cao = 2.

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

8

Đối với MySql 8, bạn có thể sử dụng tập lệnh sau:

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

Theo ý kiến ​​của tôi, việc đặt "validate_password_policy" thành "thấp" hoặc gỡ cài đặt "plugin mật khẩu xác thực" không phải là điều nên làm. Bạn không bao giờ phải thỏa hiệp với bảo mật cơ sở dữ liệu của bạn (trừ khi bạn không thực sự quan tâm). Tôi tự hỏi tại sao mọi người thậm chí còn đề xuất các tùy chọn này khi bạn chỉ cần chọn một mật khẩu tốt.

Để khắc phục vấn đề này, tôi đã thực hiện lệnh sau trong mysql: SHOW VARIABLES THÍCH 'validate_password%' theo đề xuất của @JNevill. "Validate_password_policy" của tôi đã được đặt thành Trung bình, cùng với những thứ khác. Dưới đây là ảnh chụp màn hình thực hiện của nó: Xác thực chính sách mật khẩu

Kết quả là tự giải thích. Đối với mật khẩu hợp lệ (khi chính sách Mật khẩu được đặt thành trung bình):

  • Mật khẩu phải dài ít nhất 8 ký tự
  • Số trường hợp hỗn hợp là 1 (Ít nhất 1 chữ cái nhỏ và 1 chữ cái viết hoa)
  • Số lượng là 1
  • Số lượng ký tự đặc biệt tối thiểu là 1

Vì vậy, một mật khẩu hợp lệ phải tuân theo chính sách. Ví dụ về mật khẩu hợp lệ cho các quy tắc trên có thể:

  • Sinh viên123 @
  • NINZAcoder $ 100
  • demoPass # 00

Bạn có thể chọn bất kỳ sự kết hợp nào miễn là nó thỏa mãn chính sách.

Đối với "validate_password_policy" khác, bạn chỉ cần xem các giá trị cho các tùy chọn khác nhau và chọn mật khẩu của mình cho phù hợp (Tôi chưa thử "MẠNH M" " ).

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


2
Đó là MẠNH cho chính sách mật khẩu hàng đầu.
Game thủ hơi nước

Tôi cũng không hiểu mọi người gợi ý để hạ cấp validate_password_policyđến LOW. Người dùng hoàn toàn có thể tạo hoặc tạo một mật khẩu mạnh đáp ứng yêu cầu. Nếu bạn không chắc chắn cách làm, hãy sử dụng một công cụ cho việc đó. Ví dụ: github.com/joseluisq/rpasswd
joseluisq

3

Bước 1: kiểm tra plugin xác thực mặc định của bạn

SHOW VARIABLES LIKE 'default_authentication_plugin';

Bước 2: rất yêu cầu xác thực mật khẩu của bạn

SHOW VARIABLES LIKE 'validate_password%';

Bước 3: thiết lập người dùng của bạn với các yêu cầu mật khẩu chính xác

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

3

Tôi đã có cùng một vấn đề và câu trả lời chỉ ở ngay trước mặt bạn, hãy nhớ khi bạn chạy tập lệnh trong khi cài đặt mysql như

sudo mysql_secure_installation

có nơi nào bạn chọn loại mật khẩu bạn muốn chọn

Có ba cấp chính sách xác thực mật khẩu:

Độ dài THẤP> = 8 Độ dài trung bình> = 8, số, trường hợp hỗn hợp và ký tự đặc biệt MẠNH M>> = 8, số, trường hợp hỗn hợp, ký tự đặc biệt và tệp từ điển

Vui lòng nhập 0 = THẤP, 1 = TRUNG BÌNH và 2 = MẠNH M ::

bạn phải cung cấp mật khẩu cho cùng một chính sách

Dưới đây là một số ví dụ mẫu cho mật khẩu của bạn:
cho loại 0: abcdabcd
cho loại 1: abcd1234
cho loại 2:ancd@1234


2

Đối với người dùng Laravel gặp sự cố này với MySQL 8.0.x, hãy thêm

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

vào tập tin cơ sở dữ liệu của bạn như dưới đây:

// 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',
            ],
        ],
    ],

Nó sửa nó cho tôi.


2

Vấn đề là mật khẩu của bạn không phù hợp với quy tắc xác thực mật khẩu. Bạn có thể đơn giản làm theo các bước dưới đây để giải quyết vấn đề của bạn.

Bạn chỉ có thể thấy ma trận cấu hình xác thực mật khẩu bằng cách nhập mã bên dưới.

mysql-> SHOW VARIABLES LIKE 'validate_password%';

Sau đó, trong ma trận của bạn, bạn có thể tìm thấy các biến dưới đây với các giá trị tương ứng và trong đó bạn phải kiểm tra validate_password_length, validate_password_number_countvalidate_password_policy.

Kiểm tra các giá trị được sử dụng cho các biến đó. Đảm bảo số tiền của bạn validate_password_lengthkhông được lớn hơn 6. Bạn có thể đặt số đó thành 6 bằng cách sử dụng mã bên dưới.

SET GLOBAL validate_password_length = 6;

Và sau đó, bạn cần đặt validate_password_number_countthành 0. Thực hiện bằng cách sử dụng mã bên dưới.

SET GLOBAL validate_password_number_count = 0;

Cuối cùng, bạn phải đặt bạn validate_password_policyđến low. Có Mediumhoặc Highkhông cho phép mật khẩu kém an toàn của bạn. Đặt mã đó lowtheo mã bên dưới.

SET GLOBAL validate_password_policy=LOW;

1

Đặt mật khẩu thỏa mãn 7 quy tắc xác thực MySql

ví dụ:- d_VX>N("xn_BrD2y

Làm cho tiêu chí xác nhận đơn giản hơn một chút sẽ giải quyết vấn đề

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

Nhưng khuyến nghị một mật khẩu mạnh là một giải pháp chính xác


0

Thông báo lỗi này không liên quan gì đến mật khẩu được lưu trong bảng của bạn. Nó cũng xảy ra nếu bạn gõ (trên bảng điều khiển SQL)

"chọn mật khẩu ('123456789')"

hoặc nếu

"chọn mật khẩu ('A123456789')"

hoặc nếu

"chọn mật khẩu ('A! 123456789')"

Nếu bạn gõ

"chọn mật khẩu ('A! a123456789')"

sau đó nó sẽ làm việc Chỉ cần sử dụng chữ lớn + nhỏ, ký tự đặc biệt và số để tạo mật khẩu của bạn.

Bạn có thể vô hiệu hóa các kiểm tra này trong my.cnf, nhưng sau đó bạn sẽ gặp rủi ro bảo mật!

trong [mysqld] thêm:

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

không hoạt động với tôi trên cài đặt mysqld mới của Ubuntu, đã phải thêm cái này: vào /etc/mysql/mysql.conf.d/mysqld.cnf hoặc máy chủ sẽ không khởi động (đoán là plugin không tải đúng thời điểm khi tôi chỉ cần thêm nó mà không cần lệnh plugin-load-add)

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

Có một số thời điểm mà việc tìm kiếm một giải pháp nhanh chóng là tuyệt vời. Nhưng nếu bạn có thể tránh việc hạn chế mật khẩu, nó có thể khiến bạn không phải đau đầu trong tương lai.

Liên kết tiếp theo là từ tài liệu chính thức https://dev.mysql.com/doc/refman/5.6/en/validate-password.html , nơi họ đưa ra một ví dụ chính xác như của bạn và họ giải quyết nó.

Vấn đề duy nhất bạn có là mật khẩu của bạn không đủ mạnh để đáp ứng chính sách tối thiểu thực tế (không nên xóa). Vì vậy, bạn có thể thử các mật khẩu khác nhau như bạn có thể thấy trong ví dụ.


0

HIỂN THỊ BIỂU TƯỢNG THÍCH 'validate_password%';

nhập mô tả hình ảnh ở đây

mysql SET GLOBAL validate_password.length = 6;

mysql SET GLOBAL validate_password.number_count = 0;

mysql SET GLOBAL validate_password.policy = THẤP;

HIỂN THỊ BIỂU TƯỢNG THÍCH 'validate_password%';

nhập mô tả hình ảnh ở đây


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

1
Mặc dù mã này có thể giải quyết vấn đề của OP, tốt nhất là bao gồm một lời giải thích về cách mã của bạn giải quyết vấn đề của OP. Theo cách này, khách truy cập trong tương lai có thể học hỏi từ bài đăng của bạn và áp dụng nó vào mã của riêng họ. SO không phải là một dịch vụ mã hóa, mà là một nguồn tài nguyên cho kiến ​​thức. Ngoài ra, chất lượng cao, câu trả lời đầy đủ có nhiều khả năng được nâng cao. Các tính năng này, cùng với yêu cầu tất cả các bài đăng đều khép kín, là một số điểm mạnh của SO như một nền tảng, phân biệt nó với các diễn đàn. Bạn có thể chỉnh sửa để thêm thông tin bổ sung & / hoặc để bổ sung giải thích của bạn với tài liệu nguồn.
SherylHohman
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.