1. 程式人生 > >mysql數據庫設置密碼及忘記密碼時的修改方法

mysql數據庫設置密碼及忘記密碼時的修改方法

authent 賬戶 code amp 級別 oot hat red hat 數據

環境介紹:
我用的測試環境是Red Hat linux6 版本安裝Mysql5.7的server。
之前有講過mysql server安裝過程並能用navicat工具連接上mysql server。下面要說的是如何給mysql設置賬戶密碼登錄。
在剛安裝服務時,我在/etc/my.cnf 配置文件中添加了一條 skip-grant-tables 讓它可以不進行密碼驗證就能登錄到mysql server上。下面介紹的內容是mysql數據庫設置密碼及忘記密碼時的修改方法。

註:MySQL5.7在初始安裝後,會生成隨機初始密碼,並在/var/log/mysqld.log中有記錄,可以通過cat命令查看,找password關鍵字即可找到隨機初始密碼。

設置密碼方法如下:
方法1:用update直接編輯user表

mysql -u root  /*進入mysql*/
mysql>use mysql  /*進入mysql用戶*/
mysql>update user set authentication_string=password(‘newpass‘),password_expired=‘N where user=‘root‘; 
/本sql適用於mysql5.7之後的版本(包括5.7),5.7之前的版本適用於update user set Password = PASSWORD(‘newpass‘) WHERE user = ‘root‘;*/
mysql>FLUSH PRIVILEGES;   /*告訴服務器重載授權表*/

退出mysql,編輯/etc/my.cnf文件,刪除skip-grant-tables的內容,在重啟服務使用賬戶密碼登錄即可。
方法2:mysqladmin命令(當然如果你的mysqladmin連接不上mysql server,或者你沒有辦法執行mysqladmin,這種方法就是無效的)
mysqladmin -u root password "newpass" /*設置的密碼為newpass*/<br/>如果要修改用戶名密碼
方法3:為賬戶賦予密碼用 set password命令
mysql&gt; SET PASSWORD FOR ‘root‘@‘localhost‘ = PASSWORD(‘newpass‘);


方法4:如果你沒有以匿名用戶連接,省略FOR子句便可以更改自己的密碼:
mysql&gt; SET PASSWORD = PASSWORD(‘newpass‘);
方法5:你還可以在全局級別使用GRANT USAGE語句(在.)來指定某個賬戶的密碼而不影響賬戶當前的權限:
mysql&gt; GRANT USAGE ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘newpass‘;

補充:創建新賬戶時建立密碼

mysql> INSERT INTO user (Host,User,Password) VALUES(‘%‘,‘oldboy‘,PASSWORD(‘newpass‘));
mysql> FLUSH PRIVILEGES;

當你使用SET PASSWORD、INSERT或UPDATE指定賬戶的密碼時,必須用PASSWORD()函數對它進行加密。(唯一的特例是如果密碼為空,你不需要使用PASSWORD())。需要使用PASSWORD()是因為user表以加密方式保存密碼,而不是明文。

mysql> INSERT INTO user (Host,User,Password) VALUES(‘%‘,‘oldboy‘,‘newpass‘);
mysql> FLUSH PRIVILEGES;

結果是密碼‘newpass‘保存到user表後沒有加密。當oldboy使用該密碼連接服務器時,值被加密並同保存在user表中的進行比較。但是,保存的值為字符串‘newpass‘,因此比較將失敗,服務器拒絕連接:
Access denied

修改密碼方法如下:
方法1: 如果忘記root密碼,可以通過上面的設置密碼第一種方法進行修改。
1.先修改配置文件/etc/my.cnf ,在[mysql]下面添加 skip-grant-tables 參數,重啟服務。這時不用輸入密碼就能登錄mysql
2.進入 mysql庫,輸入use mysql,用update 修改mysql的user表
3.FLUSH PRIVILEGES; /刷新權限/,然後退出mysql
4.將my.cnf配置文件中的 skip-grant-tables 參數註銷或刪除,在重啟mysql服務即可

方法2: 使用mysqladmin
mysqladmin -u root -p password "newpass2" /*這時候回車提示輸入的密碼是舊密碼*/
mysqladmin -u root -pnewpass password "newpass2" /*如果記得舊密碼,用這種方式*/

mysql數據庫設置密碼及忘記密碼時的修改方法