解決Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'問題


ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
 
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如下內容:
[client]
#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中的默認值)
 
另一篇文章:
Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'問題的解決

這種問題需要強行重新修改密碼,方法如下:

/etc/init.d/mysql stop   (service mysqld stop )
/usr/bin/mysqld_safe --skip-grant-tables
另外開個SSH連接【我是通過下面這個方法解決的
[root@localhost ~]# mysql
mysql>use mysql
mysql>update user set password=password("123456") where user="root";
mysql>flush privileges;
mysql>exit

pkill -KILL -t pts/0 可將pts為0的**用戶(之前運行mysqld_safe的用戶窗口)強制踢出
正常啟動 MySQL:/etc/init.d/mysql start   (service mysqld start)

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM