24

我通常正确设置 MySQL 以进行远程访问。

目前我被 MySQL 8 卡住了。

首先是在 mysql.conf.d/mysqld.cnf 上,我没有任何 bind-address 行,所以我手动添加了它(bind-address 0.0.0.0)并且我授予用户访问权限'%'

当我连接时,我收到消息“身份验证失败”

但它在本地主机/命令行上运行良好

4

4 回答 4

48
  1. 从文件中删除或注释bind_address参数。my.ini

(文件名因操作系统而异。在 Linux 上 my.ini 实际上是 my.cnf 位于目录 /etc/mysql/ 中)

  1. 重新启动服务。
  2. 创建root用户(是的,一个新用户,因为存在的是 'root@localhost' ,它仅是本地访问):

    CREATE USER 'root'@'%' IDENTIFIED BY '123';

  3. 给予特权:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

对于DBA用户,WITH GRANT OPTION请在末尾添加。

例如CREATE USER 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;


因为它不能与 GRANT 一起使用 CREATE

MySQL 8不能再用 来创建用户GRANT,所以IDENTIFIED BY '123'如果你尝试用它来使用它会有一个错误GRANT,这是最常见的错误。

于 2019-04-25T16:37:09.913 回答
14

MySQL 8 中的远程访问:

1)允许从任何主机访问

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address            = 0.0.0.0

2)允许用户从任何地方访问:

mysql

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
UPDATE mysql.user SET host='%' WHERE user='root';

3)将身份验证更改为密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'ThePassword';
于 2021-01-08T20:53:07.040 回答
8

有同样的问题,连接到 MySQL Workbench 并更新了用户权限。

MySQL 版本:8.0.20 社区。操作系统:Windows 10。

  1. 打开 MySQL Workbench --> 服务器 --> 用户和权限
  2. 选择用户
  3. 将主机匹配限制更改为“%”,以便从任何主机访问。
  4. 应用更改。
  5. 如果需要,重新启动 MySQL 服务。它对我有用,无需重新启动。

截屏, MySQL 工作台 8.0.20

于 2020-08-27T07:54:44.283 回答
1

对于 MySQL 8,打开 mysqld.cnf 文件

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

并修改或添加绑定地址选项:

[mysqld]
bind-address = 0.0.0.0

重启mysql服务器

sudo service mysql restart
于 2018-08-05T11:13:59.780 回答