簡體   English   中英

OperationalError:(1698,“用戶'cotequotey'@'localhost'的訪問被拒絕”)

[英]OperationalError: (1698, “Access denied for user 'cotequotey'@'localhost'”)

即使嘗試了該線程中的方法, 錯誤1698(28000):用戶'superuser1'@'localhost'的訪問被拒絕 ,我的用戶名'cotequotey'仍然存在相同的錯誤,內容為:

OperationalError: (1045, "Access denied for user 'cotequotey'@'localhost' (using password: NO)")

這個用戶名“ cotequotey”是我將auth_socket插件賦予的用戶名,以便該用戶名成為默認用戶名而不是root用戶。 所以這是我的用戶表的樣子:

mysql> select User,host,plugin, authentication_string from mysql.user;
+------------------+-----------+-----------------------+-------------------------------------------+
| User             | host      | plugin                | authentication_string                     |
+------------------+-----------+-----------------------+-------------------------------------------+
| root             | localhost | mysql_native_password | *B845F78DCA29B8AE945AB9CFFAC24A9D17EB5063 |
| mysql.session    | localhost | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys        | localhost | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| debian-sys-maint | localhost | mysql_native_password | *0C8DDC30A93F5F8834121C4DF8703A051E215166 |
| cotequotey       | localhost | auth_socket           |                                           |
+------------------+-----------+-----------------------+-------------------------------------------+
5 rows in set (0.00 sec)

因此,我希望在執行命令時通過“ cotequotey”進行的連接無需密碼即可正常工作:

ubuntu:~/environment/RAD_Final (angela) $ mysql -u cotequotey
ERROR 1045 (28000): Access denied for user 'cotequotey'@'localhost'

但是,控制台中的此命令仍然會產生原始錯誤,因此我想知道是否有人知道解決方案?

我想知道這是否是授予權限的問題,因為我的根授予權限與cotequotey @ localhost的授予權限相同。 不確定這是否會使他們發生沖突。

+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
+---------------------------------------------------------------------------+
| Grants for cotequotey@localhost                                           |
+---------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'cotequotey'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'cotequotey'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------------+

根據文檔

套接字插件檢查套接字用戶名(操作系統用戶名)是否與客戶端程序向服務器指定的MySQL用戶名匹配。 如果名稱不匹配,則插件將檢查套接字用戶名是否與mysql.user系統表行的authentication_string列中指定的名稱匹配。 如果找到匹配項,則插件允許連接。 可以使用帶有CREATE USER或ALTER USER的IDENTIFIED ... AS子句來指定authentication_string值。

看來您的mysql帳戶名與您的UNIX用戶名不匹配,並且您在authentication_string字段中沒有指定替代名稱。

附錄:本質上auth_socket表示“如果操作系統對您進行了身份驗證,則MySQL也將信任您。” 完成此操作的默認設置是檢查Linux帳戶名和MySQL帳戶名是否匹配(因此,沒有其他人可以登錄到計算機並聲稱自己是您而獲得特權)。 您可以通過指定備用名稱來覆蓋此行為,如上面鏈接的文檔中所述。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM