mysql數據庫修改密碼方法

環境介紹:
操作系統:Red Hat linux6
數據庫版本:Mysql5.7

注:MySQL5.7在初始安裝後,會生成隨機初始密碼,並在/var/log/mysqld.log中有記錄,可以通過head命令查看,找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之前的版本不是authentication_string,而是Password,所以把authentication_string改爲password即可設置密碼。
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" /*如果記得舊密碼,用這種方式*/

當你使用navicat mysql工具連接mysql服務時報err1130錯誤,原因及解決方法如下:
mysql數據庫修改密碼方法

1.檢查下防火牆是否關閉 service iptables stop
2.改表法:檢查是否是因爲賬號不支持遠程,只能localhost。
登錄本地數據庫,進入mysql用戶use mysql;
將user數據表裏面的對應用戶的host列中的localhost改爲%即可。
SQL:
mysql&gt; select host,user from user order by host desc,user desc; ---檢查用戶的host<br/>mysql&gt;update user set host='%' where user='root'; --- 把localhost改爲%

在MySQL中’%’表示可以在任何主機上登錄MySQL數據庫,那爲什麼還需要明確創建登錄主機爲localhost的用戶呢?
這涉及到MySQL安裝時的初始化用戶,匿名用戶以及連接驗證策略等,下面進行深入的分析。

轉載出處:
1.深入分析MySQL ERROR 1045 (28000)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章