mysql重置密碼出現的一系列問題

本人初識mysql,輸入mysql -u root -p,出現enter password,我直接點擊回車,出現瞭如下錯誤提示:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

大概一些朋友也是在網上看到過這樣的錯誤,並且表示比較好解決,大概意思是密碼錯誤之類的,但是那是不可能的,緊接着這個錯誤,噩夢開始了:會連續出現很多錯誤,最後還是解決了,方法都是網上找來的,如果哪裏侵權了我會及時改正謝謝!
第一步:
#1.停止mysql數據庫
/etc/init.d/mysqld stop
 
#2.執行如下命令
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
 
#3.使用root登錄mysql數據庫
mysql -u root mysql
 
#4.更新root密碼
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
#最新版MySQL請採用如下SQL:
mysql> UPDATE user SET authentication_string=PASSWORD('newpassword') where USER='root';
 
#5.刷新權限 
mysql> FLUSH PRIVILEGES;
 
#6.退出mysql
mysql> quit
 
#7.重啓mysql
/etc/init.d/mysqld restart
 
#8.使用root用戶重新登錄mysql
mysql -uroot -p 
Enter password: <輸入新設的密碼newpassword>

這是網上找的第一種方法,還有一種是修改etc/my.conf配置文件,但是最無奈的是我的配置文件是空的。。。相關鏈接文件也是,當然了我的問

題不是那麼好解決的,到了第二步:跳過安全檢查時出現了問題:
mysqld_safe Directory ‘/var/run/mysqld’ for UNIX socket file don’t exists
解決方法如下:  mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
/usr/bin/mysqld_safe --skip-grant-tables &
然後再開啓另一個終端登錄mysql,就可以跳過安全認證了。
但你以爲這一切都結束了?不!在更改密碼時再次報錯:

ERROR 1054 (42S22): Unknown column 'password' in 'field list'

大神給的解釋是:
原來是mysql數據庫下已經沒有password這個字段了,password字段改成了 authentication_string

所以更改語句替換爲update mysql.user set authentication_string=password('root') where user='root' ;即可

當然,一切修改完之後在啓動mysql時又出現了問題:

ERROR 2002 (HY000):Can't connect to local MySQL server

這個問題我的原因是之前以安全模式進入mysql結果沒有關掉,結束mysql_safe相關進程就ok了,但是出現這個問題的其他原因也挺多的,我也一併貼了出來供大家參考:

方案1.
 1.#ps -A|grep mysql
   顯示類似:
  1829 ?        00:00:00 mysqld_safe
   1876 ?        00:00:31 mysqld
  2.#kill -9 1829
  3.#kill -9 1876
  4.#/etc/init.d/mysql restart
  5.#mysql -u root -p
 
   他的麻煩解決了,我的還沒解決!
 
繼續找
方案2
先查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是否已經啓動.
另外看看是不是權限問題.
------------------------------------------------------------------------------------
[root@localhost beinan]#chown -R mysql:mysql /var/lib/mysql
[root@localhost beinan]# /etc/init.d/mysqld start
啓動 MySQL: [ 確定 ]
[root@localhost lib]# mysqladmin -uroot password '123456'
[root@localhost lib]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or /g.
Your MySQL connection id is 3 to server version: 4.1.11

Type 'help;' or '/h' for help. Type '/c' to clear the buffe
 
他的也解決了,我的麻煩還在繼續,依然繼續尋找
 
方案3
問題解決了,竟然是max_connections=1000 他說太多了,然後改成500也說多,無奈刪之問題解決了。
 
還是不行
方案4
   
     /var/lib/mysql 所有文件權限 改成mysql.mysql
    
     不行不行
 
方案5
     摘要:解決不能通過mysql .sock連接MySQL問題 這個問題主要提示是,不能通過 '/tmp/mysql.sock'連到服務器,而php標準配置正是用過'/tmp/mysql .sock',但是一些mysql 安裝方法 將 mysql.sock放在/var/lib/mysql .sock或者其他的什麼地方,你可以通過修改/etc/my.cnf文件來修正它,打開文件,可以看到如下的東東:

   [mysql d] 
  socket=/var/lib/mysql .sock 
  改一下就好了,但也會引起其他的問題,如mysql 程序連不上了,再加一點: 
  [mysql 
  socket=/tmp/mysql .sock 
  或者還可以通過修改php.ini中的配置來使php用其他的mysql .sock來連,這個大家自己去找找
  
  或者用這樣的方法:
  ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock

成功了,就是這樣ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock

OK!



終於,噩夢結束了。。。其實簡單來說就是跳過mysql的密碼驗證,然後對密碼進行修改就ok了,沒想到我中間會出這麼多岔子。。。如果有相同經歷的同學可以參照我整理的錯誤,可能有點亂哈,第一次弄,哪裏說得不對也歡迎指正!




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