安装了 MySQL 服务器,但 mysql 命令未在 shell 中要求输入密码

安装了 MySQL 服务器,但 mysql 命令未在 shell 中要求输入密码

我在我的服务器“mysql Ver 8.0.25-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))”上安装了以下 mysql 客户端,并执行了 mysql_secure_installation 步骤,并按照此过程的要求设置了密码。在 shell 中,我以 root 身份登录,我想知道这是否与我使用此命令时 mysql 不要求输入密码有关?基本上,我在终端中输入 mysql,然后我得到 mysql - 不提示输入任何密码。

答案1

原因是 MySQL 默认对 root 用户使用套接字身份验证选项。

如果您想禁用它,您需要将帐户的身份验证插件root从“套接字身份验证”更改为“本机 MySQL 身份验证”。

答案2

大概套接字认证如果调用二进制文件的用户名mysql与 MySQL 已知的用户名匹配,MySQL 基本上就会对您进行身份验证。

服务器端 auth_socket 身份验证插件通过 Unix 套接字文件对从本地主机连接的客户端进行身份验证。该插件使用 SO_PEERCRED 套接字选项获取有关运行客户端程序的用户的信息。因此,该插件只能在支持 SO_PEERCRED 选项的系统(例如 Linux)上使用。

答案3

您很可能将您的凭据保存在.my.cnf文件中。

答案4

您应该检查 /var/log/mysql,因为一些软件包维护者设置了应用程序,因此它在那里记录初始密码。

您应该使用该密码,或停止该服务,然后通过启动“mysqld_safe --skip-grant-tables”无密码启动它,然后使用以下命令更改 root 密码

相关内容