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

时间:2016-07-11 15:45:04

标签: mysql linux ubuntu

我经历了所有类似或相同的问题(例如thisthis),但仍然无法解决问题。

我在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

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

你可以重新安装一切,我做了。我最初使用macos包安装程序安装。这没让我到任何地方。

所以卸载了所有东西,然后升级了brew,并通过brew安装。运行mysql shell证明了一件混乱的事情。最终有效的是mysql -u root -p

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