亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL ERROR 1045(28000):用戶'賬單'@'localhost'拒絕訪問

MySQL ERROR 1045(28000):用戶'賬單'@'localhost'拒絕訪問

慕尼黑5688855 2019-05-27 15:14:24
首先讓我提一下,我已經經歷了許多建議的問題,并沒有找到相關的答案。這就是我正在做的事情。我已連接到我的Amazon EC2實例。我可以使用以下命令使用MySQL root登錄:mysql -u root -p然后我用主機%創建了一個新的用戶賬單CREATE USER 'bill'@'%' IDENTIFIED BY 'passpass';授予用戶賬單的所有權限:grant all privileges on *.* to 'bill'@'%' with grant option;然后我從root用戶退出并嘗試使用bill登錄:mysql -u bill -p輸入正確的密碼并收到此錯誤:ERROR 1045(28000):用戶'賬單'@'localhost'拒絕訪問(使用密碼:YES)
查看完整描述

3 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

您可能有一個匿名用戶''@'localhost'''@'127.0.0.1'。

根據手冊

當可能存在多個匹配項時,服務器必須確定要使用哪些匹配項。它解決了這個問題如下:(...)

  • 當客戶端嘗試連接時,服務器按排序順序查看[表mysql.user]的行。

  • 服務器使用與客戶端主機名和用戶名匹配的第一行。

(...)服務器使用排序規則,首先對具有最特定主機值的行進行排序。文字主機名[例如“localhost”]和IP地址是最具體的。

因此,這樣的匿名用戶將“屏蔽”任何其他用戶,就像'[any_username]'@'%'連接時一樣localhost。

'bill'@'localhost'匹配'bill'@'%',但會匹配(例如)''@'localhost'beforehands。

推薦的解決方案是刪除這個匿名用戶(這通常是一件好事)。


以下編輯主要與主要問題無關。這些僅用于回答本主題中其他評論中提出的一些問題。

編輯1

'bill'@'%'通過套接字進行身份驗證。

 root @ myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass --socket = / tmp / mysql-5.5.sock

    歡迎使用MySQL監視器(...)


    mysql> SELECT用戶,主機FROM mysql.user;

    + ------ + ----------- +

    | 用戶| 主持人|

    + ------ + ----------- +

    | 賬單| %|

    | 根| 127.0.0.1 |

    | 根| :: 1 |

    | 根| localhost |

    + ------ + ----------- +

    4行(0.00秒)


    mysql> SELECT USER(),CURRENT_USER();

    + ---------------- + ---------------- +

    | USER()| CURRENT_USER()|

    + ---------------- + ---------------- +

    | bill @ localhost | 賬單@%|

    + ---------------- + ---------------- +

    1排(0.02秒)


    mysql> SHOW VARIABLES LIKE'skip_networking';

    + ----------------- + ------- +

    | Variable_name | 價值|

    + ----------------- + ------- +

    | skip_networking | ON |

    + ----------------- + ------- +

    1排(0.00秒)


編輯2


完全相同的設置,除了我重新激活網絡,我現在創建一個匿名用戶''@'localhost'。



    root @ myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql

    歡迎使用MySQL監視器(...)


    mysql> CREATE USER''@'localhost'通過'anotherpass'識別;

    查詢正常,0行受影響(0.00秒)


    mysql>再見


    root @ myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \

        --socket = / TMP / MySQL的-5.5.sock

    ERROR 1045(28000):用戶'賬單'@'localhost'拒絕訪問(使用密碼:YES)

    root @ myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \

        -h127.0.0.1 --protocol = TCP

    ERROR 1045(28000):用戶'賬單'@'localhost'拒絕訪問(使用密碼:YES)

    root @ myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \

        -hlocalhost --protocol = TCP

    ERROR 1045(28000):用戶'賬單'@'localhost'拒絕訪問(使用密碼:YES)


編輯3


與編輯2中的情況相同,現在提供匿名用戶的密碼。



    root @ myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -panotherpass -hlocalhost

    歡迎使用MySQL監視器(...)


    mysql> SELECT USER(),CURRENT_USER();

    + ---------------- + ---------------- +

    | USER()| CURRENT_USER()|

    + ---------------- + ---------------- +

    | bill @ localhost | @localhost |

    + ---------------- + ---------------- +

    1排(0.01秒)


結論1,來自編輯1:可以'bill'@'%'通過套接字進行身份驗證。

結論2,從編輯2:無論是通過TCP連接還是通過套接字連接都不會對身份驗證過程產生影響(除了一個人不能像其他人一樣連接,但'something'@'localhost'通過套接字,顯然)。

結論3,來自編輯3:雖然我指定了-ubill,但我被授予了匿名用戶的訪問權限。這是因為上面提到的“排序規則”。請注意,在大多數默認安裝中,存在無密碼的匿名用戶(應該保護/刪除)。


查看完整回答
反對 回復 2019-05-27
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

嘗試:

~$ mysql -u root -p
Enter Password:mysql> grant all privileges on *.* to bill@localhost identified by 'pass' with grant option;


查看完整回答
反對 回復 2019-05-27
  • 3 回答
  • 0 關注
  • 704 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號