비밀번호가 현재 정책 요구 사항을 충족하지 않습니다


148

mysql에서 구문을 사용하여 새 사용자를 만들고 싶습니다.

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

그러나 오류를 반환합니다.

비밀번호가 현재 정책 요구 사항을 충족하지 않습니다.

많은 암호를 시도했지만 작동하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?


1
비밀번호 정책 레벨을 낮게 설정하십시오. 여기를보세요 : dev.mysql.com/doc/refman/5.6/en/...
Fjarlaegur에게

4
비밀번호 정책은 무엇으로 설정되어 있습니까? 당신은 사용하여 암호 검증 모듈에 설정되어있는 변수를 확인하실 수 있습니다SHOW VARIABLES LIKE 'validate_password%'
JNevill

감사! 암호 정책 수준을 낮게 설정하면 작동합니다.
Nguyen

1
다음을 사용하여 문제를 해결했습니다.UNINSTALL COMPONENT 'file://component_validate_password';
princebillyGK

답변:


244

비밀번호 때문에. MySQL 클라이언트에서 다음 쿼리를 사용하여 비밀번호 유효성 검사 구성 메트릭 을 볼 수 있습니다 .

SHOW VARIABLES LIKE 'validate_password%';

출력은 다음과 같아야합니다.

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

다음과 같이 비밀번호 정책 레벨을 낮게 설정할 수 있습니다.

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

MySQL 문서를 확인하십시오 .


31
천국을 위해 YouTube 동영상이 아닌 공식 MySQL 문서를 인용해야합니다 .
Lorne의 후작

26
다음 명령을 사용하여 개발 머신의 비밀번호로 'password'를 사용하십시오.SET GLOBAL validate_password_policy = 0;
Mahmudul Hasan Shohag

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

6
그것은 단지 오히려SET GLOBAL validate_password.policy = 0;
iamtodor

1
이것은 실제로 30 자 길이의 암호가 "약한"(특수 문자 없음) 인지를 보여 주었기 때문에 도움이되었습니다 . 특수 문자 요구 사항을 제거하고 최소 길이를 8에서 20으로 늘릴 수있었습니다.
andrewtweber

68

참고 : 이것은 안전한 솔루션이 아닐 수 있습니다. 그러나 테스트 환경에서 작업하는 경우 빠른 수정이 필요하며 보안 설정은 신경 쓰지 않아도됩니다. 이것은 빠른 해결책입니다.

"mysql_secure_installation"을 실행하고 비밀번호 보안 수준을 '중간'으로 수정했을 때도 같은 문제가 발생했습니다.

다음을 실행하여 오류를 무시했습니다.

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

필요한 경우 플러그인 "validate_password"를 다시 설치하십시오.


3
끔찍한 해결책. 전체 시설을 제거하지 말고 레벨을 자신에게 적합한 수준으로 낮추어야합니다.
Lorne의 후작

10
게시 해 주셔서 감사합니다. 빠르고 더러운 수정. @kennyut의 말처럼 : "validate_password"플러그인을 다시 설치하십시오
Meng Zhao

52

비밀번호 정책이 중요하지 않은 경우 아래의 mysql 명령을 실행하여 LOW로 설정할 수 있습니다.

mysql> SET GLOBAL validate_password_policy=LOW;

8
해야 SET GLOBAL validate_password.policy=LOW;대신
songyy


20

명령을 실행 한 후 sudo mysql_secure_installation.

  1. 실행 sudo mysql하여 mysql 프롬프트로 들어갑니다.
  2. 플러그인 auth_socket 으로 가질 SELECT user,authentication_string,plugin,host FROM mysql.user;사용자 루트 를 확인하려면 이것을 실행하십시오 .
  3. 그런 다음 실행 uninstall plugin validate_password;하기 전에 권한을 삭제 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';하십시오 . 비밀번호 를 강력한 비밀번호 로 변경하십시오 .

참고 : 자세한 내용은 https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04 링크를 확인하십시오.


11

MySQL 비밀번호 정책을 LOW로 변경해야합니다.

루트로 로그인

mysql -u root -p

정책 변경

SET GLOBAL validate_password_policy=LOW;

또는

SET GLOBAL validate_password_policy=0;

출구

exit

MySQL 서비스 재시작

sudo service mysqld restart

MySQL 비밀번호 정책을 낮음 = 0 / 보통 = 1 / 높음 = 2로 변경해야합니다.

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

8

MySql 8의 경우 다음 스크립트를 사용할 수 있습니다.

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

제 생각에는 "validate_password_policy""low" 로 설정하십시오 하거나 "validate password plugin"을 제거하는 것은 옳지 않습니다. (실제로 신경 쓰지 않는 한) 데이터베이스 보안으로 타협해서는 안됩니다. 단순히 좋은 암호를 선택할 수있을 때 사람들이 왜 이러한 옵션을 제안하는지 궁금합니다.

이 문제를 극복하기 위해 mysql에서 @JNevill이 제안한 'validate_password %' 와 같은 SHOW VARIABLES LIKE 명령을 실행 했습니다. "validate_password_policy"는 다른 것들과 함께 보통으로 설정되었습니다. 다음은 실행 스크린 샷입니다. 비밀번호 정책 확인

결과는 자명하다. 유효한 비밀번호 (비밀번호 정책이 보통으로 설정된 경우) :

  • 비밀번호는 8 자 이상이어야합니다
  • 대소 문자 혼합 수는 1 자 (소문자 1 자 이상, 대문자 1 자)
  • 숫자는 1입니다
  • 최소 특수 문자 수는 1입니다.

따라서 유효한 암호는 정책을 준수해야합니다. 위 규칙에 유효한 비밀번호의 예는 다음과 같습니다.

  • 학생 123 @
  • 닌자 코더
  • demoPass # 00

정책을 만족하는 한 원하는 조합을 선택할 수 있습니다.

다른 "validate_password_policy"의 경우 단순히 다른 옵션의 값을보고 그에 따라 비밀번호를 선택할 수 있습니다 ( "STRONG"에 대해서는 시도하지 않았습니다 ).

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


2
최고의 비밀번호 정책은 강력합니다.
Steam 게이머

또한 다운 그레이드 validate_password_policy를 제안하는 사람들을 이해하지 못합니다 LOW. 사용자는 요구 사항을 충족하는 강력한 암호를 완벽하게 생성하거나 생성 할 수 있습니다. 어떻게해야할지 잘 모르겠다면 도구를 사용하십시오. 예를 들어 github.com/joseluisq/rpasswd
joseluisq

3

1 단계 : 기본 인증 플러그인 확인

SHOW VARIABLES LIKE 'default_authentication_plugin';

2 단계 : 비밀번호 유효성 검사 요구 사항 충족

SHOW VARIABLES LIKE 'validate_password%';

3 단계 : 올바른 비밀번호 요구 사항으로 사용자 설정

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

3

나는 같은 문제가 있었고 대답은 바로 당신 앞에 있습니다 .mysql을 설치하는 동안 스크립트를 실행할 때를 기억하십시오.

sudo mysql_secure_installation

당신이 선택하고 싶은 암호 유형을 어딘가에

비밀번호 유효성 검증 정책에는 세 가지 레벨이 있습니다.

LOW Length> = 8 MEDIUM Length> = 8, 숫자, 대소 문자 및 특수 문자 STRONG Length> = 8, 숫자, 대소 문자, 특수 문자 및 사전 파일

0 = LOW, 1 = MEDIUM 및 2 = STRONG을 입력하십시오 :

동일한 정책에 비밀번호를 제공해야합니다

다음은 암호에 대한 몇 가지 샘플 예입니다.
유형 0 : abcdabcd
유형 1 : abcd1234
유형 2 :ancd@1234


2

MySQL 8.0.x에서이 문제가 발생하는 Laravel 사용자의 경우 추가

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

아래와 같이 database.php 파일에 :

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

그것은 나를 위해 그것을 고쳤다.


2

문제는 비밀번호가 비밀번호 유효성 검사 규칙과 일치하지 않는다는 것입니다. 아래 단계를 따라 간단하게 문제를 해결할 수 있습니다.

아래 코드를 입력하여 비밀번호 유효성 검사 구성 매트릭스를 간단히 볼 수 있습니다.

mysql-> SHOW VARIABLES LIKE 'validate_password%';

그런 다음 행렬에서 해당 값을 가진 변수를 찾을 수 있으며 여기서 validate_password_length, validate_password_number_count및 을 확인해야합니다 validate_password_policy.

해당 변수에 사용 된 값을 확인하십시오. 반드시 당신의 확인 validate_password_length6.보다 안보다 당신은 코드 아래 사용하여 6가 설정할 수 있습니다.

SET GLOBAL validate_password_length = 6;

그런 다음 validate_password_number_count0 으로 설정 해야합니다. 아래 코드를 사용하여 수행하십시오.

SET GLOBAL validate_password_number_count = 0;

마지막으로로 설정해야 validate_password_policy합니다 low. 같은 것을 갖는 Medium또는 High더 낮은 보안의 암호를 할 수 실 거예요. low아래 코드로 설정하십시오 .

SET GLOBAL validate_password_policy=LOW;

1

7 개의 MySql 유효성 검사 규칙을 만족하는 암호 설정

예 :- d_VX>N("xn_BrD2y

유효성 검사 기준을 좀 더 단순하게 만들면 문제가 해결됩니다.

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

그러나 강력한 암호는 올바른 해결책입니다.


0

이 오류 메시지는 테이블에 저장된 비밀번호와 아무 관련이 없습니다. SQL 콘솔에서 입력하면 발생합니다.

"암호 선택 ( '123456789')"

아니면

"암호 선택 ( 'A123456789')"

아니면

"암호 선택 ( 'A! 123456789')"

입력하면

"암호 선택 ( 'A! a123456789')"

그런 다음 작동합니다. 큰 + 작은 글자, 특수 문자 및 숫자를 사용하여 비밀번호를 만드십시오.

my.cnf에서 이러한 검사를 비활성화 할 수 있지만 보안 위험이 있습니다!

[mysqld]에서 다음을 추가하십시오.

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

mysqld의 ubuntu를 새로 설치할 때 작동하지 않았습니다 ./etc/mysql/mysql.conf.d/mysqld.cnf에 추가해야합니다. 그렇지 않으면 서버가 시작되지 않습니다 (플러그인이 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

빠른 솔루션을 찾는 것이 좋은 순간이 있습니다. 그러나 암호 제한을 낮추지 않으면 앞으로 큰 두통을 피할 수 있습니다.

다음 링크는 공식 문서 https://dev.mysql.com/doc/refman/5.6/en/validate-password.html 에서 가져온 것입니다. 여기서 당신의 것과 똑같은 예를 드러내고 해결합니다.

유일한 문제는 비밀번호가 실제 최소 정책을 충족 할만큼 강하지 않다는 것입니다 (제거하지 않는 것이 좋습니다). 예에서 볼 수 있듯이 다른 비밀번호를 사용해 볼 수 있습니다.


0

'validate_password %'와 같은 변수 표시

여기에 이미지 설명을 입력하십시오

mysql> SET GLOBAL validate_password.length = 6;

mysql> SET GLOBAL validate_password.number_count = 0;

mysql> SET GLOBAL validate_password.policy = LOW;

'validate_password %'와 같은 변수 표시

여기에 이미지 설명을 입력하십시오


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

1
이 코드는 OP 문제를 해결할 수 있지만 코드가 OP 문제를 해결하는 방법에 대한 설명을 포함하는 것이 가장 좋습니다. 이런 식으로, 미래 방문자는 귀하의 게시물에서 배우고 자신의 코드에 적용 할 수 있습니다. SO는 코딩 서비스가 아니라 지식을위한 리소스입니다. 또한 고품질의 완전한 답변이 상향 조정될 가능성이 높습니다. 이러한 기능은 모든 게시물이 자체적으로 포함되어야한다는 요구 사항과 함께 플랫폼으로서 SO의 강점 중 일부이며 포럼과 차별화됩니다. 추가 정보를 추가하거나 소스 문서로 설명을 보충하도록 편집 할 수 있습니다.
SherylHohman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.