我有一台 MySQL 服务器,其 MySQL 根密码为空字符串。如果我尝试在不使用密码的情况下连接 MySQL,则会被拒绝。如下所示:
# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
# mysql -p
Enter password: <-- I just hit enter, without typing anything
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql>
如何让 MySQL 允许我连接而不先提示我输入密码?我还有其他服务器,我可以正常连接而无需提示输入任何密码,而且其他服务器也没有使用 .my.cnf 文件。
答案1
如果您要存储任何有价值的东西,我并不鼓励在没有密码的情况下运行 MySQL,但在这种情况下,问题似乎是 mysql 命令的 shell 别名,它指定了用户/密码选项。
通常,如果您只是运行“mysql”,您将收到类似“拒绝访问(使用密码:否)”的错误。此时您会意识到需要使用 -p 选项告诉 mysql 向您询问密码。(或者在命令中使用 --password=pass 直接指定密码)。
在这个问题中,线索是错误表明使用了密码,即使命令行上没有直接提供密码选项。 如果 mysql 没有密码,则任何提供的密码(即使是空白的)都会导致身份验证失败。
答案2
存在安全风险,但是如果您将其添加到 my.cnf 中:
skip-grant-tables
您无需密码即可访问 mysql。
最好创建一个 /root/.my.cnf 文件,以便在没有密码提示的情况下进行访问