以前從mysql 5.6的時候,mysql 尚未密碼策略這個東東,因此咱們每一個用戶的密碼均可以爲所欲爲地設置,什麼123 ,abc 這些,甚至你搞個空格,那也是OK的。html
而mysql.user 表裏面也保存有password 的字段進行標識這個是密碼的位置。mysql
可是當升級到了MySQL 5.7 的時候呢。多了密碼策略,在linux下面安裝,默認是使用中等標準的密碼策略。能夠使用linux
show variables like '%validate_password%' 進行查看sql
關於這部分知識,能夠移步到這篇 Jonsea 寫的博客進行查閱 http://www.cnblogs.com/jonsea/p/5510219.html服務器
到了5.7的版本(Linux安裝),默認的狀況下,密碼策略是這樣的ui
默認8位長度而且要大小寫。因此假如以前用到的什麼123啊,那些,到這個版本都無論用了(固然你能夠本身把這些設置給幹掉)。加密
因此在這裏,只要執行 select password("123"); 直接就報錯,連加密串都不會出來的,拋出錯誤 htm
Error Code: 1819. Your password does not satisfy the current policy requirementsblog
因此用這種方法是不用期望了。可是,直接修改密碼,仍是能夠走得通的。rem
比方說我從 5.6 的版本得出 select password("123") -- *23AE809DDACAF96AF0FD78ED04B6A265E05AA257
到了5.7,我能夠直接把這串直接貼到系統表裏面。
update mysql.user set authentication_string = "*23AE809DDACAF96AF0FD78ED04B6A265E05AA257" --這個地方用 password("123") 就報錯了,可是直接賦值就不會
where user=XXX;
flush 一下,搞掂。
結語:比較適合當服務器遷移的時候,假如程序改密碼比較麻煩,只能切IP的時候,仍是有用的~