这是我参与2022首次更文挑战的第22天,活动详情查看:2022首次更文挑战」
本地使用 navicate 连接数据库时,测试连接显示远程连接失败信息。
1. 出现问题
服务器首次安装 MySQL后,在本地使用 navicate 工具远程连接 MySQL 数据库时,显示ERROR 1130: Host 'xxx' is not allowed to connect to this MySQL server
。
2. 问题原因
出现该问题的原因是因为 MySQL 数据库安装后默认仅支持localhost本地连接,使用其他电脑远程连接时就会报错。
3. 解决办法
对于该问题,可以通过修改 MySQL 的配置来允许远程连接访问数据库。
3.1 修改 user 表中 host 限制
- 数据库本地连接,
mysql -u root -p
,输入正确的密码登录 - 选择使用mysql数据库,
use mysql;
- 使用
show databases;
查看mysql中的数据库信息 - 使用
select database();
查看当前选择的数据库
- 使用
- 查看user表中root用户数据,
select host,user from user where user='root';
,可以看到其中的host字段值为localhost
,表示允许本地登录 - 修改root用户对应的host为'%',
update user set host='%' where user='root';
,其中%
代表允许所有的机器访问 - 更新成功后,使用sql语句刷新配置,
flush privileges;
此时查询 user 表数据为:
本地使用navicate 远程连接成功。
3.2 MySQL访问授权方式
通过修改user表数据来允许远程连接,设置host为'%'后,所有电脑均可以远程连接数据库,存在较大的风险,可以通过授权的方式来控制更细粒度的数据访问。
- 允许所有用户使用root/123456远程连接访问mysql数据,
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
- 允许指定ip地址的用户使用root/123456远程连接访问mysql数据,
GRANT ALL PRIVILEGES ON *.* TO 'root'@'ip' IDENTIFIED BY '123456' WITH GRANT OPTION;
- 允许指定ip地址的用户使用root/123456远程连接访问mysql的test表数据,
GRANT ALL PRIVILEGES ON test.* TO 'root'@'ip' IDENTIFIED BY '123456' WITH GRANT OPTION;
- 最后,修改完成后一定要记得执行刷新语句,保证修改生效,
flush privileges;