私はmysqlで新しいユーザーを作成したいと思います:
create user 'demo'@'localhost' identified by 'password';
しかし、それはエラーを返します。
パスワードが現在のポリシー要件を満たしていません。
私はたくさんのパスワードを試しましたが、うまくいきません。どうすればこれを修正できますか?
あなたのパスワードのせいで。 mysql
のSHOW 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)
メモ:これは安全な解決策ではないかもしれません。しかし、テスト環境で作業しているのであれば、ちょっとした修正が必要で、セキュリティ設定についても気にする必要はありません。これは迅速な解決策です。
"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
を実行してください。SELECT user,authentication_string,plugin,Host FROM mysql.user;
を実行して、ユーザーrootがプラグインとしてauth_socketを持つことを確認します。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 を参照してください。
ステップ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';
私は同じ問題を抱えていて、答えはちょうどあなたの目の前にあります。
Sudo mysql_secure_installation
どこであなたが選んだパスワードタイプを選びましたか
パスワード検証ポリシーには3つのレベルがあります。
LOW長さ> = 8 MEDIUM長さ= = 8、数字、大文字と小文字の混在、および特殊文字STRONG長さ> = 8、数字、大文字と小文字の混在、特殊文字および辞書ファイル
0 =低、1 =中、2 =強を入力してください。
同じポリシーにパスワードを入力する必要があります
ここにあなたのパスワードのためのいくつかのサンプル例があります:
タイプ0の場合は:abcdabcd
タイプ1の場合は:abcd1234
タイプ2の場合は:ancd@1234
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',
],
],
],
それは私のためにそれを修正しました。
私の意見では、 "validate_password_policy" を "low" に設定するのは正しいことではありません。あなたはあなたのデータベースのセキュリティと妥協してはいけません(あなたが本当に気にしない限り)。私はあなたが単に良いパスワードを選ぶことができるのに人々がなぜこれらのオプションを提案しさえしているのか疑問に思います。
この問題を克服するために、mysqlで次のコマンドを実行しました。 SHOW VARIABLES LIKE 'validate_password%' @JNevillで提案されているとおり。私の "validate_password_policy"は他のものと共に中に設定されました。これが実行のスクリーンショットです: パスワードポリシーの検証
結果は一目瞭然です。有効なパスワード(パスワードポリシーが中に設定されている場合):
したがって、有効なパスワードはポリシーに従わなければなりません。上記の規則に対する有効なパスワードの例は次のとおりです。
ポリシーを満たす限り、任意の組み合わせを選択できます。
他の "validate_password_policy" の場合は、単に異なるオプションの値を調べて、それに応じてパスワードを選択することができます( "HIGH" を試していません)。
このエラーメッセージは、テーブルに保存されているパスワードとは関係ありません。 (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
問題は、パスワードがパスワード検証ルールに一致しないことです。以下の手順に従って簡単に問題を解決できます。
以下のコードを入力すると、パスワード検証の構成マトリックスを簡単に確認できます。
mysql-> SHOW VARIABLES LIKE 'validate_password%';
次に、マトリックス内で対応する値を持つ変数を見つけて、validate_password_length
、validate_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_policy
をlow
に設定する必要があります。 Medium
またはHigh
として使用すると、安全性の低いパスワードが許可されなくなります。以下のコードでlow
に設定します。
SET GLOBAL validate_password_policy=LOW;