无法通过 MySQL Workbench 连接到 Ubuntu 16.04 中的本地主机(无密码根)

Jon*_*han 30 mysql-workbench 16.04

Oracle 网站似乎暗示它仅适用于 15 和 14。http: //dev.mysql.com/downloads/workbench/

另外我的两台 Ubuntu 16.04 机器似乎无法连接(root 访问被拒绝错误)

图片

它安装没问题。打开没问题。但它不会连接到本地主机。

有人有运气吗?

小智 46

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

MySQL root 密码为空时的密码行为已更改。当 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';
Run Code Online (Sandbox Code Playgroud)

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

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


Jon*_*han 37

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

sudo mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

创建一个名为“admin”的用户并使用它来连接mysql-workbench.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
Run Code Online (Sandbox Code Playgroud)

  • 这适用于 Ubuntu 18.04 (4认同)
  • 在 Ubuntu 20.04 中为我工作 (2认同)

小智 5

这个问题可能已经两年了,但我今晚在 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 命令。

正确设置后测试连接。它应该是成功的,你已经准备好开始了。