问题描述
客户端root账号连接mysql时,远程连接不上
原因分析:
1、mysql的服务状态
2、登录账号的host是否为%,允许远程任意地址连接
3、在需要密码登录的前提下:登录账号的host为%的密码是否设置
解决方案:
1、核实MySQL服务状态:
systemctl status mysql
MySQL服务运行正常,若MySQL已经没有启动,重启MySQL服务器:
systemctl restart mysql
2、从服务器登录进入数据库:
bin/mysql -u root -p
输入密码登录进去后
3、授与权限,并更新权限:
CREATE USER 'root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
刷新:
FLUSH PRIVILEGES;
4、查看结果是不是root用户仅允许本地 localhost 登录,是的话,就要修改它的host为%,表示任意IP地址都可以登录:
use mysql;
select user, host from user;
可以看到root用户有一个%,代表全部主机都可以使用root用户通过外网连接数据库,但是连接依然出现问题Access denied for user 'root'@'ip' (using password: YES)
5、root账号的任意地址登录的密码不对,在配置mysql的时候,遗留了host的%的密码调整为test@mysql,导致不对:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'test@mysql';
6、DBeaver连接,校验是否解决问题:
连接成功