用户 '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'的访问被拒绝(使用密码:YES)