【MySQL】 [1045]Access denied for user ‘root’@’localhost’ 錯誤解決方法總結

錯誤代碼 1045

Access denied for user ‘root’@’localhost’ (using password:YES)。以下是此類錯誤解決方法的彙總。僅爲總結,如有異議,歡迎交流。

【Windows平臺】解決辦法是重新設置root用戶密碼,操作步驟如下:

1、以系統管理員身份登錄到系統;
2、如果MySQL服務器正在運行,停止它。
如果是作爲Windows服務運行的服務器,進入服務管理器:開始菜單->控制面板->管理工具->服務
如果服務器不是作爲服務而運行的,可能需要使用任務管理器來強制停止它。
3、創建1個文本文件,並將下述命令置於單一行中:
SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘MyNewPassword’);
用任意名稱保存該文件。在本例中,該文件爲C:mysql-init.txt。
4、進入DOS命令提示:開始菜單->運行-> cmd
假定你已將MySQL安裝到C:mysql。如果你將MySQL安裝到了另一位置,請對下述命令進行相應的調整。
在DOS命令提示符下,執行命令:
C:> C:mysqlbinmysqld-nt –init-file=C:mysql-init.txt
在服務器啓動時,執行由“–init-file”選項(作用:在啓動時從指定的文件中讀取SQL命令)命名的文件的內容,更改根用戶密碼。當服務器成功啓動後,應刪除C:mysql-init.txt。
5、停止MySQL服務器,然後在正常模式下重啓它。如果以服務方式運行服務器,應從Windows服務窗口啓動它。如果以手動方式啓動了服務器,能夠像正常情形下一樣使用命令。
應能使用新密碼進行連接。

// /etc/init.d/mysql stop
// mysqld_safe –user=mysql –skip-grant-tables –skip-networking &
// mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD(‘newpassword’) where USER=’root’;
mysql> FLUSH PRIVILEGES;
mysql> quit
// /etc/init.d/mysql restart
// mysql -uroot -p
Enter password: <輸入新設的密碼newpassword>

【Linux】錯誤原因可能如下:

Red Hat Enterprise Linux 5服務器上mysql啓動報錯:ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)

原因1-啓動命令錯誤:
我開始的時候直接輸入命令:mysql start
正確的啓動命令是:
/etc/rc.d/init.d/mysql start

原因2-配置文件錯誤:
檢查etc下面的my.cnf如下內容:
// password = your_password
port = 3306
socket = /usr/mysql-data/mysql.sock
// Here follows entries for some specific programs
// The MySQL server
[mysqld]
port = 3306
socket = /usr/mysql-data/mysql.sock

原因3-啓動文件錯誤:
需要修改MySQL啓動腳本/etc/rc.d/init.d/mysql,
其中datadir= ? 一行檢查下!

原因4-前提是你在使用php連接時候報錯!
在/etc/php.ini修改mysql.default_socket的值設置爲:
mysql.default_socket=/var/lib/mysql/mysql.sock
回到終點設置個連接:ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
(在/etc/php.ini中mysql.default_socket這個文件中,關於mysql.default_socket的值的說明是這樣的,
;Default socket name for local MySQL connects. If empty, uses the built-in MySQL defaults.
這個值一開始是空的,也就是說,如果我們不主動去修改的話,php將會使用內建在mysql中的默認值)

注意:另外還遇到需要service mysql star才能啓動service mysql stop才能停止。
還有直接使用mysql不能找到命令,錯誤爲“bash: mysql: command not found”可以直接**mysql的安裝目錄中的bin文件夾跟絕對路徑運行命令,還有的需要加./mysql 才能執行。

【MySQL修改密碼方法】

方法一   

使用phpMyAdmin

  (圖形化管理MySql數據庫的工具),這是最簡單的,直接用SQL語句修改mysql數據庫庫的user表,不過別忘了使用PASSWORD函數,插入用戶用Insert命令,修改用戶用Update命令,刪除用Delete命令。在本節後面有數據表user字段的詳細介紹。   

方法二   

  使用mysqladmin。輸入  

  mysqladmin -u root -p oldpassword newpasswd  

執行這個命令後,需要輸入root的原密碼,這樣root的密碼將改爲newpasswd。同樣,把命令裏的root改爲你的用戶名,你就可以改你自己的密碼了。

  當然如果你的mysqladmin連接不上mysql

  server,或者你沒有辦法執行mysqladmin,那麼這種方法就是無效的,而且mysqladmin無法把密碼清空。   

  下面的方法都在mysql提示符下使用,且必須有mysql的root權限:   

方法三   

  mysql> INSERT INTO mysql.user (Host,User,Password) VALUES(‘%’,’system’, PASSWORD(‘manager’));

  mysql> FLUSH PRIVILEGES   

  確切地說這是在增加一個用戶,用戶名爲system,密碼爲manager。注意要使用PASSWORD函數,然後還要使用FLUSH

  PRIVILEGES來執行確認。

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