我在我的服务器“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 密码