无法通过MySQL Workbench连接到Ubuntu 16.04(无密码的根)中的localhost


17

Oracle网站似乎暗示它只能在15和14上运行 。http://dev.mysql.com/downloads/workbench/

另外,我的两台Ubuntu 16.04计算机似乎无法连接(root用户的“访问被拒绝”错误)

图片

它可以安装。它可以打开。但是它不会连接到本地主机。

有人运气好吗?


您是从源代码构建的吗?给出的确切错误是什么?类似于您指定了错误的密码?

是的,它是相似的。但是root没有密码。而且我可以在命令行上正确连接到root。我仔细检查了所有特权,然后运行了。FLUSH PRIVILEGES; 在这一点上,我很好奇是否有人可以从16连接到本地主机,因为Oracle网站明确只说了14和15
Jonathan

我没有看到Oracle声称它不起作用,只是没有看到Xenial的二进制文件。但是我在这里确实看到了mysql-workbench,packages.ubuntu.com / xenial / mysql-workbench 。该错误似乎不是软件兼容性错误。打开mysql日志并将日志级别提高到2,然后查看日志是否显示您的请求。

@ bc2946088 mysql-workbench在16.04 链接
Videonauth

您是否检查了4个选项中的任何一个?;-) WB对我来说效果很好(5.7 btw)。下面的证明。
Rinzwind '16

Answers:


27

该问题可能是由于在升级到16.04时未设置密码的情况下,默认情况下为root用户启用了套接字身份验证。16.04 发行说明中记录了这一重要警告:

MySQL根密码为空时的密码行为已更改。现在,当MySQL根密码为空时,打包将启用套接字身份验证。这意味着非root用户不能以空密码作为MySQL root用户登录。

无论出于什么原因,至少对于我来说,16.04附带的MySQL Workbench都无法与MySQL服务器一起使用。我尝试使用“本地套接字/管道”以多种不同方式进行连接,但无济于事。

解决方案是恢复到本机密码身份验证。您可以通过执行以下操作使用套接字身份验证登录到MySQL:

sudo mysql -u root

登录后:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

它将恢复为本机(旧的默认)密码身份验证。如果尝试了其他方法来解决此问题,则需要确保mysql.user中的“ plugin”字段设置为“ auth_token”,如果您遇到这种情况,则可能需要使用mysqld_safe登录到MySQL像我一样一直在修补事物。

感谢米格尔·涅托的博客文章对这一解决方案。


太神奇了,我永远都不会意识到这一点。
乔纳森

这样就解决了,但是下次我运行apt更新时,它又坏了。
乔纳森

apt更新输出是什么?
Mike M

我没看到它,因为直到下一次我运行mysql时我才注意到,很久以后
Jonathan

我想知道这是Ubuntu 16.04还是mysql 5.7(是Oracle还是Canonical进行了此更改?)
Jonathan

22

MySQL 5.7及更高版本不支持以“ root”身份进入,mysql-workbench因此您必须创建一个普通用户并通过该用户进行连接。

sudo mysql -u root -p

创建一个名为“ admin”的用户,并使用该用户进行连接mysql-workbench

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

谢谢乔纳森,这个答案对我来说是完美的。
克里斯·埃文斯

2
这适用于Ubuntu 18.04
tadeubarbosa

完善。谢谢(18.04.2)
罗恩Nuni

4

这个问题可能已经两年了,但是我今晚使用mysql-workbench的工作似乎已经给了我答案。

root用户现在默认情况下为用户auth_socket身份验证。root可以获取访问权限的唯一方法是以root身份登录。

我是通过mysql -u root以root用户和标准用户身份运行而发现的 。

在标准用户下将无法使用。

所以我的下一个问题是-mysql-workbench以什么用户身份运行。事实证明,它默认情况下以标准用户身份运行。要使其以root用户身份运行,必须从root用户运行。因此,我进入了root用户CLI并键入'mysql-workbench'。

然后,我必须进入root用户的设置,如下所示。该文件位置对于ubuntu 18.04安装有效。

根连接设置mysql-workbench。

如果该套接字位置无效,则需要从root或sudo进入mysql CLI并运行以下命令。

MySQL CLI命令查找套接字。

正确设置后,测试连接。它应该成功了,您已经准备好了。


这次真是万分感谢!当我可以告诉工具使用较新的方法进行连接时,我不必将与安全性相关的更改还原为身份验证以支持较旧的工具。
亚伦

是否通过这种方式实现本地连接?我不明白为什么我们不能通过TCP / IP连接。
约翰·冈尼德利斯

2

对我来说效果很好,我没什么特别的。mysql-server-5.7从命令行安装和工作台,并使用密码设置用户并设置普通数据库权限(也使用普通方法)。

在此处输入图片说明

并带有数据库和表:

在此处输入图片说明


有趣。喜欢discworld参考。重新配置mysql软件包时,没有提示您更改密码。你呢?我倾向于认为我的安装损坏或存在一些冲突。我想应该提示您更改root密码。
乔纳森

1

创建一个具有适当管理权限的用户帐户,该帐户可以使用auth_socket插件通过mysql工作台进行连接。注意,这不适用于到mysql服务器的根连接

从终端会话登录到mysql:

$sudo mysql

如果您能够执行此操作,则启用auth_socket插件,并且根帐户正在使用该插件进行身份验证。请注意,这是在运行安全安装脚本之后在ubuntu上安装mysql时的默认设置。

首先为您的帐户“ valerie”创建一个mysql用户:

mysql> CREATE USER 'valerie'@'localhost' IDENTIFIED WITH auth_socket;

启用帐户的管理特权:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'valerie'@'localhost' WITH GRANT OPTION;

退出外壳:

mysql> exit

然后在mysql工作台中:

  1. 创建一个新的连接
  2. 选择连接方式为“本地套接字/管道”
  3. 将Socket / Pipe路径设置为:/var/run/mysqld/mysqld.sock(请注意,这是Debian / Ubuntu系统的路径,并针对其他Linux版本进行了更改)
  4. 设置用户名(在此示例中为“ valerie”)

然后,您应该能够通过此连接连接到mysql服务器。


0

尝试这个

选择mysql数据库

1:使用mysql;

2:更新用户集plugin ='mysql_native_password',其中User ='root';

3:刷新权限;

4:退出;

〜$ sudo服务mysql重新启动


0

运行Ubuntu 16.04的AWS主机上的MySQL服务器; Ubuntu 16.04笔记本电脑上的mysql-workbench; 使用KeyPair连接。

设置后,测试数据库连接正常。但是实际的连接总是失败,并发出一条类似于乔纳森·里德斯(Jonathan Leaders)发布的消息。检查日志,~/.mysql/workbench/log发现一些“权限被拒绝”消息。

现在,我可以使用mysql-workbench: sudo mysql-workbench

之后,我可以进入chmod需要许可的目录。


2
这是问题的答案吗?
乔治·乌德森 George Udosen)'17
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.