mysql報錯Accessdeniedforuser'root'@'localhost'(usingpassword:YES)

jiacai2050發表於2013-07-07

java.sql.SQLException: Access denied for user `root`@`localhost` (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:943)

上面是錯誤的部分日誌,如果出現了這個錯誤,

首先,保證你連線資料庫的使用者名稱密碼都正確

其次,修改密碼(假設你用root登陸),具體步驟如下:

1. 找到 mysql 的啟動配置檔案
    windows 下面是 my.ini ,linux 下面叫 my.cnf ,linux下面如果沒有特別指定目錄,則 my.cnf 一般存放於 /etc/ 目錄下面。
2. 修改 mysql 配置檔案
    在配置檔案中找到 [mysqld] 一行,在下面新增 skip-grant-tables 後儲存該檔案並退出。
3. 重新啟動 mysql 資料庫
4. 重置 mysql 的 root 密碼
    方法一:使用 “ 路徑/mysql -h hostname(你主機的ip地址) -u root mysql” 命令登入 mysql ,執行命令修改密碼:
                  update user set password=password(`新的密碼`) where user=`root`;
                  flush privileges;
    方法二:使用 “ 路徑/mysqladmin -h hostname -u rootpassword `新的密碼` ”直接重置root的密碼。
5. 再次修改 mysql 配置檔案
    將第2步新增的 skip-grant-tables 這句引數刪除。
6. 再次重新啟動 mysql 資料庫
 
現在你應該可以使用新密碼正常登入了。 

PS:我機器按照以上操作可以正常登陸了,但是以前的資料庫都丟失了,就剩下了三個information_schema、mysql、performance_schema,不知道什麼原因


相關文章