パスワードは現在のポリシー要件を満たしていません


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

ありがとう!パスワードポリシーレベルを低く設定すると、機能します。
グエン

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ドキュメントを引用する必要があります
ローンの侯爵2017年

26
開発マシンのパスワードとして使用する「パスワード」に、次のコマンドを使用しますSET GLOBAL validate_password_policy = 0;
マームードゥール・ハサン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
ひどい解決策。施設全体を削除するのではなく、レベルを自分に合ったレベルに下げる必要があります。
ローンの侯爵2017年

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. これSELECT user,authentication_string,plugin,host FROM mysql.user;を実行して、ユーザーrootがプラグインauth_socketを持っていることを確認します。
  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で次のコマンドを実行:SHOW変数のように「validate_passwordの%」を @JNevillにより示唆されるように。私の "validate_password_policy"は、他のものとともに、中に設定されました。これが実行のスクリーンショットです:パスワードポリシーの検証

結果は自明です。有効なパスワードの場合(パスワードポリシーが中に設定されている場合):

  • パスワードは8文字以上にする必要があります
  • 大文字と小文字が混在する数は1です(少なくとも1文字が小文字で、1文字が大文字)
  • 数は1です
  • 特殊文字の最小数は1です

したがって、有効なパスワードはポリシーに従う必要があります。上記のルールの有効なパスワードの例:

  • Student123 @
  • NINZAcoder $ 100
  • 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

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

どこかで、選択したいパスワードの種類を選択しました

パスワード検証ポリシーには3つのレベルがあります。

LOW長さ> = 8 MEDIUM長さ> = 8、数字、大文字と小文字、特殊文字STRONG長さ> = 8、数字、大文字と小文字、特殊文字、および辞書ファイル

0 =低、1 =中、2 =強を入力してください:

同じポリシーにパスワードを与える必要があります

パスワードのサンプル例を以下に示します。
タイプ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_lengthvalidate_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')」

または

「select password( 'A123456789')」

または

「パスワードを選択( 'A!123456789')」

入力した場合

「select password( '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

SHOW VARIABLES LIKE 'validate_password%';

ここに画像の説明を入力してください

mysql> SET GLOBAL validate_password.length = 6;

mysql> SET GLOBAL validate_password.number_count = 0;

mysql> SET GLOBAL validate_password.policy = LOW;

SHOW VARIABLES LIKE '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.