解決1130 Host 'localhost' is not allowed to connect to this MySQL server

 

剛纔更改了mysql的root用戶密碼後就報了【1130 Host 'localhost' is not allowed to connect to this MySQL server】錯。html

緣由:mysql

1.報這個錯是沒給改後的root用戶受權,因此沒有權限登陸。sql

2.但我以爲也多是由於我更改後的密碼直接是明文而不像mysql用語句或安裝時建立是密文方式的,因此登陸的時候沒法獲取到鏈接數據庫

解決:this

【方案一】跳過受權來登陸,而後刪除root用戶,而後再spa

1.先把本地mysql服務關閉掉,而後經過在mysql安裝目錄下打開cmd運行如下跳過受權命令server

mysql>mysqld --skip-grant-tableshtm

執行過程須要一些時間,直到出現以上信息則表示mysql啓動成功。注:不要關掉這個窗口,關閉的話mysql服務則會被關閉掉blog

2.再執行命令進行登陸ip

mysql>mysql -uroot -p密碼

3.刪除user表中的root用戶,並建立與受權。

 

mysql>use mysql;

mysql>delete from user where user='root';

mysql> CREATE USER 'root'@'localhost' IDENTIFIED BY 'root';

4.在這個過程當中可能會出現如下錯誤

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot exe

1290錯誤須要執行將當前user和privilige表中的用戶信息/權限設置從mysql庫(MySQL數據庫的內置庫)中提取到內存裏的命令

mysql>flush privileges;

ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'localhost'

1396錯誤的緣由是因爲以前帳號信息清理不乾淨。須要drop本地root信息

mysql>drop user 'root'@'localhost';

5.受權

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'root';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

mysql>flush privileges;

相關文章
相關標籤/搜索