windows linux 下安裝mysql 報1045 等錯誤,mysql1045

來源:互聯網
上載者:User

windows linux 下安裝mysql 報1045 等錯誤,mysql1045

以前在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個Null 字元,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使用者登入


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



相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.