MySQL 需要密码,但密码为空

MySQL 需要密码,但密码为空
mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

mysql -uroot -p
Enter password:       <-- leave blank, hit enter without entering anything

mysql>                <-- i am logged in

注意:这是一个新的 mysql 实例安装

那么,如果密码为空,为什么没有 -p 标志就无法登录?

稍微澄清一下。我在尝试使用脚本更改密码时遇到了这个问题:

我们正在使用 bash 脚本来执行此操作。

  • mysqladmin -u root password abc无法工作(拒绝访问)
  • mysqladmin -u root -p password abc无法使用,因为它会提示输入密码,而我们需要自动执行此操作。
  • mysqladmin -u root -p'' password abc也不起作用

答案1

这是空白密码的默认行为。这没有什么问题。

为了允许自己登录 MySQL 而不必在提示符下输入密码,请将密码添加到主目录中名为 .my.cnf 的文件中。

[client]
user=root
password=

现在将.my.cnf 文件的权限更改为 400 或 600。

chmod 400 .my.cnf

或者

chmod 600 .my.cnf

现在

mysql

命令将自动登录。

答案2

它正在发送密码,尽管没有给出密码;它是从某个地方获取密码的。

检查 处的文件~/.my.cnf

但是,请尽快为您的根用户设置密码 - 除非您可能以匿名方式登录(select current_user();)?

答案3

因为 MySQL 设置为使用密码验证,如果您在命令调用时没有提供密码(将其保留在“-p”),它会提示您输入 MySQL 密码。

把密码想象成回车符比空白更容易

相关内容