標籤: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 等錯誤