最近不少新入職的同事問這個問題,特別是經過 homebrew 自動安裝的 mysql ,其版本默認已是 8.0 了,因爲增長了一些安全策略等限制,因此修改用戶密碼會稍微麻煩些,索性就把這個總結貼一下吧。mysql
select host, user, authentication_string, plugin from user;
複製代碼
host:容許用戶登陸的ip‘位置’%表示能夠遠程; user:當前數據庫的用戶名; authentication_string:用戶密碼;在mysql 5.7.9之後廢棄了password字段和password()函數; plugin:密碼加密方式;sql
若是發現 root 用戶的 authentication_string 字段下有內容,先將其設置爲空:數據庫
use mysql;
update user set authentication_string='' where user='root';
複製代碼
mysql.server stop
複製代碼
或者把 mysql 進程 kill 掉。而後在啓動 mysql 服務:安全
mysql.server start
複製代碼
mysql -u root -p
passwrod:
複製代碼
不須要輸入密碼,直接回車便可bash
ALTER user 'root' IDENTIFIED BY '123456' ;
複製代碼
語句中的 root 須要跟你實際 user 表裏 root 用戶存的是 root 仍是 root@localhost 而定,因爲我這裏把密碼改爲了 123456 這樣比較簡單的格式,可能 mysql 8 默認密碼策略不容許,非要改的話能夠先修改一下密碼策略:函數
set global validate_password.length = 6 ;
set global validate_password.policy = 'LOW';
FLUSH PRIVILEGES;
複製代碼
這裏把密碼長度由默認的8位改爲了6位,而且密碼策略級別由 MEDIUM 改爲了 LOW。若是要查看密碼校驗相關設置的話能夠直接查詢系統變量:ui
SHOW VARIABLES LIKE 'validate_password.%';
複製代碼