windows linux 下安裝mysql 報1045 等錯誤

來源:互聯網
上載者:User

標籤:tables   enum   into   方便   tail   總結   start   my.ini   detail   

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

一、mysql登入報 1045 錯誤

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

我們看到上面的這個錯誤就是說 user 為root host為localhost的password有問題,所以我們就要看看 mysql資料庫中user表中user為root,host為localhost的這個使用者的password。

解決的方法:破解mysqlpassword

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中的password是加密儲存的,所以改動password不能向平時的sql一樣 而要使用password("新password")keyword來改動password。新password為password中的字元。

(4)、 flush tables;

//資料刷到磁碟


(5)、 flush privileges;

//更新許可權


(6)、quit

//退出

(7)、將設定檔裡 skip-grant-tables 凝視/刪掉 儲存

(8)、service mysqld restart 

// 再次啟動服務   mysql -uroot -p新password斷行符號 。這樣應該能夠了

二、 接著上面3、mysql -uroot -p  斷行符號 進入之後use表中沒資料,即建立root使用者做例如以下處理:

第一種情況,就是user中有root使用者可是串連不上是在windows下遇到的,而user中什麼都沒有是在linux(centos) 下遇到的,詳細處理例如以下:


在linux下安裝了mysql之後出現錯誤,剛開始以為就是第一種這樣的情況,網上大多也都是這類文章於是就依照這篇文章進行了改動:linux下mysql 初次登陸改動password  改動之後應該沒錯,但再次啟動服務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()|
+--------+
| [email protected] |
+--------+
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處要用password(‘password‘)。由於mysql中password是要經過編碼的,不是直接字串儲存的。

3、接著在殺掉全部mysql進程。之後正常重新啟動mysql,就可以用root使用者登入


到眼下個人就遇到的問題總的就這兩種,希望對你實用!!




windows linux 下安裝mysql 報1045 等錯誤

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.