mysql ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

mysql 在 create user 時遇到錯誤訊息:

our password does not satisfy the current policy requirements

檢視 mysql 初始的密碼策略

SHOW VARIABLES LIKE 'validate_password%';

附註: 如果你執行上面的指令, 發現是空白的, 代表你未曾執行過這行指令:

Run the security script with sudo:

sudo mysql_secure_installation

如果你是使用 macOS, 請先移動 working dir 到:/usr/local/mysql/bin

cd /usr/local/mysql/bin

Mysql 修改策略,及密碼長度

set global validate_password.policy=1;
set global validate_password.length=8;
set global validate_password.check_user_name=0;
set global validate_password.mixed_case_count=0;

validate_password_policy 值代表意義:

  • 0 or LOW 只驗證長度
  • 1 or MEDIUM 驗證長度、數字、大小寫、特殊字元
  • 2 or STRONG 驗證長度、數字、大小寫、特殊字元、字典檔案

.policy 雖然說用 2 是比較好, 偷懶的話可以用 0, 折衷, 只偷懶一點點, 用1, .policy用 2時, 問題多多. @_@; 一直都 create user fail.

重要: 透過 set 指令, 只是暫時覆寫原本的預設值, 在重開機之後, mysql 又會套用到原本的預設值.


mysql user list:

SELECT host,user FROM mysql.user;

mysql remove user:

DROP USER 'username'@'host';

mysql create user:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'user-password';

一直誤以為是policy 造成的問題, 手動用 mysql command 登入, 也會顯示 error 1045, 帳號無法登入:

mysql error 1045 access denied for user 'user'@'ip-address' (using password yes)

測試, 有時候用貼上密碼進去 mysql workbench 就是無法通過驗證,

但是加入一個新帳號來測試, 就可以通過驗證, 加入帳號用的 mysql command:

CREATE USER 'user'@'192.168.211.23' IDENTIFIED BY '!Your1pAsswoRd$';
GRANT CREATE, INDEX, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on your_database_name.* TO 'user'@'192.168.211.23' WITH GRANT OPTION;
FLUSH PRIVILEGES;


使用 command line 登入 MySql:

mysql -h host-name -u user -p 

手動輸入帳號/密碼居然可以通過驗證, 結果因為密碼太長, 懶的自行輸入, 用貼上的方式, 反而造成新的問題, 鬼打牆了一個多小時登不進去, 上網問 Google 半天, 找不到解法, 原來是不能用貼上密碼…

測試完後, 手動刪掉測試用帳號:

DROP USER 'user'@'192.168.211.23';

不確定會不會是打錯密碼, 後來就是使用另外再開的帳號來登入, 所有的client side app 都正常了.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *