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 密码。
把密码想象成回车符比空白更容易