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 都正常了.