从你提供的查询结果来看,`root` 用户只能从 localhost 连接,而没有为远程连接(`%`)配置 root 用户。这就是为什么你无法修改 root 用户的远程连接密码的原因。

### 解决方案

#### 1. 创建一个新的远程用户

如果你希望 root 用户能够从远程连接,可以创建一个新的用户,并授予其远程连接的权限。以下是步骤:

1. 创建远程用户

```sql

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

```

2. 授予远程用户权限

```sql

GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION;

```

3. 刷新权限

```sql

FLUSH PRIVILEGES;

```

4. 验证远程用户

```sql

SELECT user, host, plugin FROM user WHERE user='root';

```

你应该会看到类似以下的输出:

```

+------+-----------+-----------------------+

| user | host | plugin |

+------+-----------+-----------------------+

| root | localhost | mysql_native_password |

| root | % | mysql_native_password |

+------+-----------+-----------------------+

```

#### 2. 修改现有用户的主机名

如果你希望直接修改现有的 root 用户,使其可以从任何 IP 地址连接,可以使用以下命令:

1. 修改用户主机名

```sql

UPDATE user SET host = '%' WHERE user = 'root' AND host = 'localhost';

```

2. 刷新权限

```sql

FLUSH PRIVILEGES;

```

3. 验证修改

```sql

SELECT user, host, plugin FROM user WHERE user='root';

```

你应该会看到类似以下的输出:

```

+------+-----------+-----------------------+

| user | host | plugin |

+------+-----------+-----------------------+

| root | % | mysql_native_password |

+------+-----------+-----------------------+

```

### 注意事项

- 安全性:允许 root 用户从任何 IP 地址连接可能会带来安全风险。建议只允许特定的 IP 地址连接,例如:

```sql

CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY '12345678';

GRANT ALL PRIVILEGES ON . TO 'root'@'192.168.1.100' WITH GRANT OPTION;

FLUSH PRIVILEGES;

```

- 密码复杂度:确保使用足够复杂的密码,以防止被破解。

### 测试远程连接

在另一台远程机器上,使用新的密码尝试连接 MySQL 数据库,确保密码修改成功。可以使用以下命令测试:

```bash

mysql -u root -h your_mysql_server_ip -p

```

输入新密码后,如果能够成功连接,说明操作成功。

如果你在操作过程中遇到任何问题,请提供具体的错误信息,我可以进一步帮助你解决。

刚学java菜鸡,永劫无间蚀月,王者荣耀王者,金铲铲小铂金,第五人格菜鸡,原神开服玩家,星穹铁道菜鸡,崩坏的菜鸡,闪耀暖暖,和平精英,LOL,CSGO,以及三A大作收集者等等。。。