비밀번호가 현재 정책 요구 사항을 충족하지 않습니다.
구문을 사용하여 mysql에서 새 사용자를 만들고 싶습니다.
create user 'demo'@'localhost' identified by 'password';
그러나 오류를 반환합니다.
암호가 현재 정책 요구 사항을 충족하지 않습니다.
많은 암호를 시도했지만 작동하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?
암호 때문입니다. MySQL 클라이언트에서 다음 쿼리를 사용하여 비밀번호 유효성 검사 구성 측정 항목 을 볼 수 있습니다 .
SHOW VARIABLES LIKE 'validate_password%';
또는 비밀번호 정책 수준을 낮게 설정할 수 있습니다. 예를 들면 다음과 같습니다.
SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;
MySQL 문서를 확인합니다 .
참고 : 이것은 보안 솔루션이 아닐 수 있습니다. 그러나 테스트 환경에서 작업하는 경우 빠른 수정이 필요하며 보안 설정에 대해서는 신경 쓰지 않습니다. 이것은 빠른 해결책입니다.
"mysql_secure_installation"을 실행하고 암호 보안 수준을 '중간'으로 수정했을 때 동일한 문제가 발생했습니다.
다음을 실행하여 오류를 우회했습니다.
mysql -h localhost -u root -p
mysql>uninstall plugin validate_password;
필요한 경우 "validate_password"플러그인을 다시 설치하십시오.
암호 정책이 무엇인지 신경 쓰지 않는 경우. 아래 mysql 명령을 실행하여 LOW로 설정할 수 있습니다.
mysql> SET GLOBAL validate_password_policy=LOW;
명령을 실행 한 후 sudo mysql_secure_installation
.
sudo mysql
mysql 프롬프트로 들어가기 위해 실행하십시오 .- 이것을 실행
SELECT user,authentication_string,plugin,host FROM mysql.user;
하여 사용자 루트 가 플러그인 auth_socket 으로 있는지 확인하십시오 . - 그런 다음 실행
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 를 확인하십시오.
MySQL 8 *의 경우
SET GLOBAL validate_password.policy=LOW
정책에 대해 설명하는 참조 링크- 여기를 클릭하십시오.
제 생각에는 "validate_password_policy" 를 "low"로 설정 하거나 "validate password plugin"을 제거하는 것은 올바른 일이 아닙니다. 데이터베이스 보안을 절대로 타협해서는 안됩니다 (정말 신경 쓰지 않는 한). 좋은 비밀번호를 고를 수 있는데 왜 사람들이 이러한 옵션을 제안하는지 궁금합니다.
이 문제를 극복하기 위해 mysql에서 다음 명령을 실행 했습니다. @JNevill이 제안한 SHOW VARIABLES LIKE 'validate_password %' . 내 "validate_password_policy"는 다른 것들과 함께 Medium으로 설정되었습니다. 다음은 실행 스크린 샷입니다. 암호 정책 유효성 검사
결과는 자명합니다. 유효한 암호의 경우 (암호 정책이 보통으로 설정된 경우) :
- 비밀번호는 8 자 이상이어야합니다.
- 혼합 대소 문자 수는 1입니다 (작은 문자 1 자, 대문자 1 자).
- 수는 1입니다.
- 최소 특수 문자 수는 1입니다.
따라서 유효한 암호는 정책을 따라야합니다. 위 규칙에 대한 유효한 비밀번호의 예는 다음과 같습니다.
- Student123 @
- NINZAcoder $ 100
- demoPass # 00
정책을 충족하는 한 모든 조합을 선택할 수 있습니다.
For other "validate_password_policy" you can simply look the values for different options and pick your password accordingly(I haven't tried for "HIGH").
Step 1: check your default authentication plugin
SHOW VARIABLES LIKE 'default_authentication_plugin';
Step 2: veryfing your password validation requirements
SHOW VARIABLES LIKE 'validate_password%';
Step 3: setting up your user with correct password requirements
CREATE USER '<your_user>'@'localhost' IDENTIFIED WITH '<your_default_auth_plugin>' BY 'password';
I had the same Problem and the Answer is just Right in front of you, remember when you ran the script while installing mysql like
sudo mysql_secure_installation
there somewhere you chose which password type would you like to chose
There are three levels of password validation policy:
LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
you have to give a password to same policy
here are some sample examples for your passwords:
for type 0: abcdabcd
for type 1: abcd1234
for type 2: ancd@1234
The problem is that your password wont match the password validation rules. You can simple follow below steps to solve your problem.
You can simply see password validation configuration matrix by typing below code.
mysql-> SHOW VARIABLES LIKE 'validate_password%';
Then in your matrix you can find below variables with corresponding values and in there you have to check validate_password_length
, validate_password_number_count
and validate_password_policy
.
Check the values used for those variables. Make sure your validate_password_length
should not be greater than 6. You can set that to 6 by using below code.
SET GLOBAL validate_password_length = 6;
And after that you need to set validate_password_number_count
to 0. Do it by using below code.
SET GLOBAL validate_password_number_count = 0;
Finally you have to set you validate_password_policy
to low
. Having that as Medium
or High
wont allow your less secure passwords. Set that to low
by below code.
SET GLOBAL validate_password_policy=LOW;
You have to change mysql password policy to LOW.
login as root
mysql -u root -p
change policy
SET GLOBAL validate_password_policy=LOW;
exit
exit
restart mysql service
sudo service mysqld restart
This error message has nothing to do with the stored password in your table. It also occures if you type (on SQL console)
"select password('123456789')"
or if
"select password('A123456789')"
or if
"select password('A!123456789')"
If you type
"select password('A!a123456789')"
then it will work. Just use big + small letters, special chars and numbers to create your password.
You can disable these checks in my.cnf, but then you will have a security risk!
in [mysqld] add:
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
For Laravel users having this issue with MySQL 8.0.x, add
'modes'=> [
'ONLY_FULL_GROUP_BY',
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_ENGINE_SUBSTITUTION',
],
to your database.php file as below:
// 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',
],
],
],
It fixed it for me.
For MySql 8 you can use following script:
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;
'Programing' 카테고리의 다른 글
ipython 노트북에서 matplotlib 그림 기본 크기를 설정하는 방법은 무엇입니까? (0) | 2020.09.11 |
---|---|
파일 이름과 함께 파일 크기를 인쇄하는 find 명령을 어떻게 얻습니까? (0) | 2020.09.11 |
명령 줄에서 Gradle을 통해 장치에 배포 할 수 있습니까? (0) | 2020.09.11 |
C # 구문-문자열을 쉼표로 배열로 분할, 일반 목록으로 변환 및 역순 (0) | 2020.09.11 |
JSON ValueError : 예상 속성 이름 : 줄 1 열 2 (문자 1) (0) | 2020.09.11 |