即使尝试了该线程中的方法ERROR 1698 (28000): Access denied for user '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 |
+---------------------------------------------------------------------------+
答案 0 :(得分:0)
根据the docs:
套接字插件检查套接字用户名(操作系统用户名)是否与客户端程序向服务器指定的MySQL用户名匹配。如果名称不匹配,则插件将检查套接字用户名是否与mysql.user系统表行的authentication_string列中指定的名称匹配。如果找到匹配项,则插件允许连接。可以使用带有CREATE USER或ALTER USER的IDENTIFIED ... AS子句来指定authentication_string值。
看起来您的mysql帐户名与您的UNIX用户名不匹配,并且您在authentication_string
字段中没有指定备用名称。
附录: 本质上auth_socket表示“如果操作系统对您进行了身份验证,则MySQL也将信任您。”完成此操作的默认设置是检查Linux帐户名和MySQL帐户名是否匹配(因此,没有其他人可以登录到计算机并声称自己是您而获得特权)。您可以通过指定备用名称来覆盖此行为,如上面链接的文档中所述。