2016年9月13日 星期二

mysql 的密碼問題

(現在 MySQL 改為 MariaDB,但指令大致相同)

雖然強度高的密碼常常會要求包含特殊符號,但是有時候包含特殊符號的密碼卻會出問題。
例如 & 這個符號。

我曾經有一組密碼是  wC&y3t75z9
剛裝完 CentOS + MariaDB, 執行
# mysqladmin -u root password 'wC&y3t75z9'
無錯誤訊息,通過。

隨便改個密碼再試試
# mysqladmin -u root password 'xxx'
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
已經不能設定了,表示密碼已設定。

嘗試登入
# mysql -u root -pwC&y3t75z9
[2] 8012
-bash: y3t75z9: command not found

系統把 & 當成指令中斷的意思,前面的執行完,接著要執行 y3t75z9 這個指令。於是報錯。
但是
# mysql -u root -p
Enter password: (貼上密碼)
MariaDB [(none)]>  (登入成功)

所以如果有特殊符號,登入的指令加上引號比較好
# mysql -u root -p'wC&y3t75z9'


附上變更密碼的方式

互動式詢問重設密碼
# mysql_secure_installation

登入 MariaDB 之後變更
MariaDB [(none)]>
UPDATE mysql.user SET password=password('a%2Tpw$bYk43') WHERE user='root';
或是
MariaDB [(none)]>
 UPDATE mysql.user SET password=password('a%2Tpw$bYk43') WHERE user='root' AND host='localhost';
MariaDB [(none)]>
 UPDATE mysql.user SET password=password('a%2Tpw$bYk43') WHERE user='root' AND host='%';


沒有留言:

張貼留言