MySQL是一個開源的關系型數據庫管理系統,目前有兩個版本:MySQL 5.6和MySQL 8。這兩個版本的加密方式有些不同。
MySQL 5.6的加密方式
mysql>CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password'; mysql>GRANT ALL PRIVILEGES ON *.* TO 'user1'@'localhost';
MySQL 5.6使用了標準的SHA1算法進行加密,并且將密碼存儲在名為mysql.user的表中。通過調用mysql庫中的SHA1()函數,可以對密碼進行加密。
mysql>SELECT SHA1('password'); +------------------------------------------+ | SHA1('password') | +------------------------------------------+ | 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 | +------------------------------------------+
MySQL 8的加密方式
mysql>CREATE USER 'user2'@'localhost' IDENTIFIED WITH auth_socket; mysql>GRANT ALL PRIVILEGES ON *.* TO 'user2'@'localhost';
MySQL 8的加密方式與MySQL 5.6不同。它使用一個叫做bcrypt的加密算法,同時將密碼存儲在名為mysql.user表的column 'authentication_string'中。
mysql>SELECT authentication_string FROM mysql.user WHERE user = 'root'; +--------------------------------------------------------------+ | authentication_string | +--------------------------------------------------------------+ | $A$005$ThisIsASaltValueForEncryption12charsStgcv/LQ5ouYO.5w5 | +--------------------------------------------------------------+
這里的$A$表示這是一個bcrypt hash,005代表bcrypt的cost。
以上就是MySQL 5.6和MySQL 8加密方式的介紹。