web-dev-qa-db-ja.com

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

私はmysqlで新しいユーザーを作成したいと思います:

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

しかし、それはエラーを返します。

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

私はたくさんのパスワードを試しましたが、うまくいきません。どうすればこれを修正できますか?

63
Nguyen

あなたのパスワードのせいで。 mysqlSHOW VARIABLES LIKE 'validate_password%';を使用して password validate configuration metrics を表示するか、またはパスワードポリシーレベルを低く設定できます。次に例を示します。

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

あなたはこのビデオを見ることができます: エラー1819(HY000):あなたのパスワードは現在のポリシーの要件を満たしていません - Mysql(YouTube)

86
Hung Nguyen

メモ:これは安全な解決策ではないかもしれません。しかし、テスト環境で作業しているのであれば、ちょっとした修正が必要で、セキュリティ設定についても気にする必要はありません。これは迅速な解決策です。

"mysql_secure_installation"を実行し、パスワードセキュリティレベルを '中'に変更したときにも同じ問題が起こりました。

私は以下を実行することによってエラーを回避しました:

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

必要に応じてプラグイン "validate_password"を再インストールしてください。

42
kennyut

あなたがパスワードポリシーが何であるかを気にしないならば。下記のmysqlコマンドを発行して、これをLOWに設定できます。

mysql> SET GLOBAL validate_password_policy=LOW;
23
singh

コマンドSudo mysql_secure_installationを実行した後。

  1. Mysqlプロンプトに入るためにSudo 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';を実行して特権を削除してください。必ずpasswordを強力なパスワードに変更してください。

注:このリンク https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04 を参照してください。

11
Leo Sammy

MySQL 8 *の場合

SET GLOBAL validate_password.policy=LOW

ポリシーについて説明するための参照リンク - ここをクリック

10
Philip

ステップ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';
2
Oroki

私は同じ問題を抱えていて、答えはちょうどあなたの目の前にあります。

Sudo mysql_secure_installation

どこであなたが選んだパスワードタイプを選びましたか

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

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

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

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

ここにあなたのパスワードのためのいくつかのサンプル例があります:
タイプ0の場合は:abcdabcd
タイプ1の場合は:abcd1234
タイプ2の場合は:ancd@1234

1
Anurag Sahu

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

それは私のためにそれを修正しました。

0
Jekayode

私の意見では、 "validate_password_policy" "low" に設定するのは正しいことではありません。あなたはあなたのデータベースのセキュリティと妥協してはいけません(あなたが本当に気にしない限り)。私はあなたが単に良いパスワードを選ぶことができるのに人々がなぜこれらのオプションを提案しさえしているのか疑問に思います。

この問題を克服するために、mysqlで次のコマンドを実行しました。 SHOW VARIABLES LIKE 'validate_password%' @JNevillで提案されているとおり。私の "validate_password_policy"は他のものと共に中に設定されました。これが実行のスクリーンショットです: パスワードポリシーの検証

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

  • パスワードは8文字以上でなければなりません
  • 大文字と小文字の混在数は1です(最小1文字、大文字1文字)。
  • 数は1です
  • 最小特殊文字数は1です。

したがって、有効なパスワードはポリシーに従わなければなりません。上記の規則に対する有効なパスワードの例は次のとおりです。

  • Student123 @
  • NINZAcoder $ 100
  • demoPass#00

ポリシーを満たす限り、任意の組み合わせを選択できます。

他の "validate_password_policy" の場合は、単に異なるオプションの値を調べて、それに応じてパスワードを選択することができます( "HIGH" を試していません)。

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
Tino Bellmann

問題は、パスワードがパスワード検証ルールに一致しないことです。以下の手順に従って簡単に問題を解決できます。

以下のコードを入力すると、パスワード検証の構成マトリックスを簡単に確認できます。

mysql-> SHOW VARIABLES LIKE 'validate_password%';

次に、マトリックス内で対応する値を持つ変数を見つけて、validate_password_lengthvalidate_password_number_countおよびvalidate_password_policyを確認する必要があります。

これらの変数に使用されている値を確認してください。 validate_password_lengthが6を超えないようにしてください。以下のコードを使用して、6に設定できます。

SET GLOBAL validate_password_length = 6;

その後、validate_password_number_countを0に設定する必要があります。以下のコードを使用して実行してください。

SET GLOBAL validate_password_number_count = 0;

最後に、validate_password_policylowに設定する必要があります。 MediumまたはHighとして使用すると、安全性の低いパスワードが許可されなくなります。以下のコードでlowに設定します。

SET GLOBAL validate_password_policy=LOW;
0
Dushan