1. 程式人生 > >MySQL系列安裝及使用問題總結 Error 1045/1054/1820/無法建立新使用者/無法關閉/無法啟動/配置/安裝/root密碼修改

MySQL系列安裝及使用問題總結 Error 1045/1054/1820/無法建立新使用者/無法關閉/無法啟動/配置/安裝/root密碼修改

注:該經驗文件為檔案配置的安裝方式

1. 首先呢肯定是下載好檔案然後配置環境變數,還有就是在根目錄下寫一個my.ini的檔案(網上都說會有mydefault.ini,但至少我沒看到)

my.ini內容

[mysql]

# 設定mysql客戶端預設字符集

default-character-set=utf8

[mysqld]

#去掉“#”重啟mysql跳過密碼校驗

#skip-grant-tables

default_password_lifetime=0

#設定3306

port = 3306

# 設定mysql的安裝目錄

basedir=F:\MySQL\mysql-5.7.21-winx64

# 設定mysql資料庫的資料的存放目錄

datadir=F:\MySQL\mysql-5.7.21-winx64\data

# 允許最大連線數

max_connections=200

# 服務端使用的字符集預設為8位元編碼的latin1字符集

character-set-server=utf8

# 建立新表時將使用的預設儲存引擎

default-storage-engine=INNODB

注:經測試,win10下安裝無論是否管理員許可權又或是配置了環境變數,在輸入安裝命令(步驟3)之前,需調到mysql檔案的根目錄下的bin資料夾進行操作,不然操作會失敗,win7經測無需做這樣的操作(至少我是這樣)

2. 其次在cmd調到MySQL根目錄的bin資料夾下,輸入mysqld  --initialize --user=mysql –console(這裡輸完之後會進行初始化的資料建立,而最後顯示的文字的最後一排的localhost之後的據說是臨時密碼,但實際上我的經驗而言,沒有毛用…)

注:若在初始化那一步初始化出來的root賬戶下沒有mysql資料庫(根目錄下的data資料夾下沒有名為mysql的資料夾),則刪除掉根目錄的data資料夾,使用mysqld --initialize-insecure--user=mysql初始化

3. 輸入mysqld –install

注:這裡是安裝mysql,但是對於使用過的哥們兒而言,也是一樣的會提示已存在,但這個無所謂,提示存在就直接跳過這步

4.然後是關鍵的步驟來了,這裡如果按照正常的登入方式mysql –u root –p這樣來,會提示輸入密碼,而且上面也提到,給的臨時密碼沒有毛用(筆者是如此),所以這個時候又要用到另一條命令mysqld nt –skip-grant-table,這條命令的目的是為了跳過密碼驗證

,輸入之後游標會一直在新的一行閃動,但沒有新的文字出現,網上的說法是不關閉這個視窗,至少筆者美觀,所以不知道關了會不會影響會面的操作。然後新開啟一個cmd視窗然後輸入mysql –u root就能進入了

(但如果上面輸入命令之後出現了新文字便可以嘗試在my.ini寫入這句話的方法,重新啟動生效)

注:可能有的小夥伴在網上找的my.ini配置裡面的[mysqld]下面寫了這麼一段話skip-grant-table,這個同樣是跳過驗證,但是這個每次啟動都會使用到,這個會對新使用者建立產生影響(也就是說跳過驗證登入root的話是不能建立新使用者的Error 1045(貌似是這個編號.....忘了)),會報錯提示在--skip-grant-table模式下無法使用新使用者建立的命令,所以筆者建議使用在cmd裡仿照上一步驟的方式來跳過密碼驗證,主要是方便的。而使用該方法注意在修改預設賬戶密碼之後注意刪除my.ini檔案中的skip-grant-tables這句話,並重新啟動mysql才會生效

5. 然後接著是root賬戶的密碼的修改,網上的說法是update user set password=….(就修改密碼的指令,此處筆者就偷懶了)然後會報錯1054,位置的列‘password’,如果用show create table user;,從顯示出來的資訊就能知道確實沒有password,而相對的有authentication_string這一列,但實際上就是要用這一列來改。所以修改密碼的命令就成了

update user set authentication_string=PASSWORD(‘新密碼’) where user=’root’;

回車之後完成

-------------------------------------------------我是華麗的分割線--------------------------------------------------------
                                                     
注:若已能正常使用,則請直接跳至步驟8
-------------------------------------------------
我是華麗的分割線--------------------------------------------------------

6. 然後退出使用net stop mysql來關閉之前輸入的密碼驗證跳過指令的影響,但神奇的事發生了。mysql關閉提示沒啟動,啟動提示無法啟動。所以這裡筆者採用了萬能的解決方法。重啟電腦,但重啟確實起作用了,在cmd中輸入mysql –u root-p,就會彈出密碼輸入請求,然後輸入上面設定的新密碼,成功進入

7. 這是最後的問題,筆者想著馬上使用create user ‘new’@’localhost’ identified by ’123456’;來建立新的使用者,但是馬上有報錯1820(HY000),而描述的意思呢也就是現在你使用的預設root使用者密碼未設定….然後輸入了set password=PASSWORD(‘123456’);然後再輸入上面的使用者建立命令,建立成功,然後輸入命令flush privileges;重新整理許可權,然後再退出

8. 重新登入mysql,這次使用新的使用者,輸入賬戶名和密碼後。登陸成功