用户 'root'@'localhost' 的访问被拒绝

Posted

技术标签:

【中文标题】用户 \'root\'@\'localhost\' 的访问被拒绝【英文标题】:Access denied for user 'root'@'localhost'用户 'root'@'localhost' 的访问被拒绝 【发布时间】:2016-11-13 15:29:47 【问题描述】:

我回答了所有相似或相同的问题(例如this 和this),但仍然无法解决问题。

我在 Xenial 上使用 mysql 5.7.12。我不记得在安装过程中设置了任何密码(如果它询问,我提供了一个空密码)。

我尝试使用--skip-grant-tables 进行密码重置,如here 所述,它更新了数据库行,但我仍然无法登录。

sudo dpkg-reconfigure mysql-server-5.7 重新配置没有任何作用,我明白了:

Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.12, use --force if you still need to run mysql_upgrade
$ sudo dpkg-reconfigure --force mysql-server-5.7
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.12, use --force if you still need to run mysql_upgrade

有什么想法吗?

【问题讨论】:

终端,mysql -u root -p 【参考方案1】:

MySQL 5.7 在安装时会自行生成一个随机的 root 密码。

这是 MySQL 5.7.4 中的一项新更改,并在发行说明中进行了描述:https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-4.html

安装过程只创建一个 root 帐户, 'root'@'localhost',自动为此生成一个随机密码 帐户,并标记密码已过期。 MySQL 管理员必须 使用随机密码以 root 身份连接并使用 SET PASSWORD 选择一个新密码。 (随机密码在 .mysql_secret 文件在有效用户运行的主目录中 脚本。)

我从未找到 .mysql_secret 文件,但随机密码也会输出到 MySQL 错误日志中(例如 Linux 上的 /var/log/mysqld.log)。通知如下所示:

2016-07-11T15:59:54.922316Z 1 [Note] A temporary password is generated for root@localhost: f14_W1lN7FfP

【讨论】:

【参考方案2】:

您可以重新安装所有内容,我就是这样做的。我最初是使用 macOS 包安装程序安装的。那没有让我到任何地方。

所以卸载了所有东西,然后升级了 brew,并通过 brew 安装。运行 mysql shell 被证明是一件麻烦事。最终起作用的是mysql -u root -p

我在 localhost 上运行它,所以不需要 root 密码。奇怪的是,mysql -u root -p <password> 抛出了“拒绝访问”消息。

【讨论】:

【参考方案3】:

正确重新安装有帮助。删除了所有相关的东西(this instruction,但指定 mysql 的版本很重要,例如apt-get --yes purge mysql-server-5.7 mysql-client-5.7,我还删除了 mysql-common 和所有依赖项以确保)。

然后再次安装(apt-get install mysql-server mysql-client),当它要求输入密码时,这一次,我给了它一个。现在可以了。

【讨论】:

以上是关于用户 'root'@'localhost' 的访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

错误 1698 (28000): 拒绝用户 'root'@'localhost' 的访问

用户'root'@'localhost'的MYSQL访问被拒绝

用户 'root'@'localhost' 的访问被拒绝

用户'root'@'localhost'的访问被拒绝(使用密码:YES)

#1045 - 用户 'root'@'localhost' 的访问被拒绝(使用密码:否)

使用密码拒绝用户'root'@'localhost'的访问:否