程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> windowslinux下安裝mysql報1045等錯誤

windowslinux下安裝mysql報1045等錯誤

編輯:MySQL綜合教程

windowslinux下安裝mysql報1045等錯誤


以前在windows 下安裝mysql 沒怎麼出現過問題,而在linux下安裝的時候出現了一些問題,昨天在windows 安裝的時候也出現了1045 錯誤,就個人經歷來看這個問題就是 root用戶密碼的問題,所以將解決的方式總結如下:

一、mysql登錄報 1045 錯誤

mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'

我們看到上面的這個錯誤就是說 user 為root host為localhost的密碼有問題,所以我們就要看看 mysql數據庫中user表中user為root,host為localhost的這個用戶的密碼。

解決辦法:破解mysql密碼

1、 service mysqld stop

// 停止mysql服務

2、mysqld_safe --skip-grant-tables

// 在mysql的配置文件如果是linux(centos)則在etc/my.cnf配置文件的mysqld_safe 下天添加skip-grant-tables,如果在windows下則在安裝目錄下的my.ini 配置文件的mysqld 下添加 skip-grant-tables, skip-grant-tables是跳過授權表,這樣配置之後保存 關閉,重新啟動mysql服務

3、 mysql -uroot -p 回車

// 這樣就進來了,這裡有兩個問題,也是我遇到的兩種情況,一種是user表中有user為root的用戶,一種是沒有,如果有則進行如下處理:

(1)、use mysql;

// 使用mysql數據庫

(2)、 delete from user where host="localhost" and user=" ";

// 將host為localhost下的user為空的用戶都刪了,其實也可以把這裡localhost改成 % 免得以後連接的時候連接不了,不過是後話在這裡該不該都可以。

(3)、 update user set password=PASSWORD("newpass") where user="root";
// 如果你查詢一下你會發現 mysql中的密碼是加密保存的,所以修改密碼不能向平時的sql一樣 而要使用password("新密碼")關鍵字來修改密碼,新密碼為password中的字符。

(4)、 flush tables;

//數據刷到磁盤


(5)、 flush privileges;

//更新權限

(6)、quit

//退出

(7)、將配置文件中 skip-grant-tables 注釋/刪掉 保存

(8)、service mysqld restart

// 再次啟動服務 mysql -uroot -p新密碼回車 ,這樣應該可以了

二、 接著上面3、mysql -uroot -p 回車 進入之後use表中沒數據,即創建root用戶做如下處理:

第一種情況,就是user中有root用戶但是連接不上是在windows下遇到的,而user中什麼都沒有是在linux(centos) 下遇到的,具體處理如下:

在linux下安裝了mysql之後出現錯誤,剛開始以為就是第一種這種情況,網上大多也都是這類文章於是就按照這篇文章進行了修改:linux下mysql 初次登陸修改密碼 修改之後應該沒錯,但再次啟動服務root登錄還是不行,下面的就是出現的問題和解決過程:

1、查詢看有沒有user 為root的用戶,或這說user中有沒有用戶。

mysqld_safe--skip-grant-tables&mysql-uroot mysql
mysql> select * from user;
Empty set (0.00 sec)
mysql> select USER();
+--------+
| USER()|
+--------+
| root@ |
+--------+
1 row in set (0.00 sec)

結果是沒有root用戶,user表裡面是空的,還是第一次遇到這種問題的。

2、插入用戶信息到 user表
由於 mysqld_safe --skip-grant-tables裡面是不能用grant的,於是想到了手動insert插入root用戶:

**為了大家方便這裡提供一些說明:第一個值是host,第二個為user這兩項是必填項,password("my_password")這裡進行密碼的設置,MY_PASSWORD 就是新設的密碼 ,而'Y'有28個,之後有1個enum和3個blob 可以為空,也就是這裡的4個空字符,int類型有4個,默認值為0

INSERTINTO user VALUES('%','root',password('MY_PASSWORD'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0)

這裡要主要的是第3個字段密碼處要用password('密碼'),因為mysql中密碼是要經過編碼的,不是直接字符串保存的。

3、接著在殺掉所有mysql進程,之後正常重啟mysql,即可用root用戶登錄

到目前個人就遇到的問題總的就這兩種,希望對你有用!!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved