[MySQL] - 允许 root 远程访问

前言

初次安装的 MySQL 只能允许用户在本地(localhost)进行访问,如果想要用 Navicat for MySQL 或者 PHP MyAdmin 之类的可视化 MySQL 软件进行远程访问,会提示 Host is not allowed to connect to this MySQL server

如下所示:

image.png

此时就需要更新用户的权限允许远程访问了。

解决方法

如果想要让 root 用户可以进行远程登录 MySQL,就需要修改 root 用户的权限,当然,不仅是 root 用户,也可以新增其他用户,方法都是一样的。示例中,本人的 MySQL 版本为:8.0.16。

第一步:

进入 MySQL 命令行:

mysql -uroot -p

接着输入 MySQL 的 root 用户密码进入 MySQL 命令行界面。

第二步:

选择 mysql 数据库:

use mysql;

可以看到 Database changed 的提示。

接着可以运行 show tables; 查看该库的所有表:

image.png

其中,控制权限的表为 user

执行如下语句查询 user 表中的字段:

mysql> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | mysql_native_password |
+-----------+------------------+-----------------------+
4 rows in set (0.00 sec)

查询结果可以看到 host:允许访问的主机类型,plugin:加密方式。

第三步:

这里,我们使用 update 命令更改 root 用户的权限:

mysql> update user set host = "%" where user = "root";
Query OK, 1 row affected (0.01 sec)     
Rows matched: 1  Changed: 1  Warnings: 0

接着需要刷新一下权限,刷新之后权限才会生效:

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

大功告成!接下来就可以通过第三方软件访问 MySQL 了。

题外话

网络上查找的结果,大部分都是使用如下语句更新权限:

ALTER USER 'root'@'%' IDENTIFIED BY 'password'

也可以一试。

讨论

还没有人评论~