解决远程访问虚拟机mysql失败问题

        今天在Ubuntu22.04上安装完成mysql8后,在主机用Navicat连接后报未知错误,处理步骤如下:

1.cmd 测试连接虚拟机3306端口 

telnet 192.168.0.5 3306

        提示连接失败,因此可以从端口入手,我事先关闭了防火墙,所以因该不是防火墙问题。

2. 进入虚拟机mysql,执行

select user,host from mysql.user;

        查看所有用户的登录ip,我这里选择用root登录,把root的host值改为%表示可以在任意设备以root登录mysql,修改代码如下

update MySQL.user set host = '%' where user = 'root';

3.在虚拟机查看3306端口情况 

netstat -apn|grep 3306

        发现显示的是 127.0.0.1:3306,于是

 vim /etc/mysql/mysql.conf.d/mysqld.cnf

        注释其中的 bind-adress 127.0.0.1,然后重启mysql服务再次查看

service mysql restart
netstat -apn|grep 3306

发现显示的是::::3306 便可以了。

        到这里按道理来说是可以允许远程访问mysql,先在navicat测试连接一下,报错Acces denied for 'root'@'192.168.0.8......,其中192.168.0.8是主机的IP地址。之前的报错是未知错误,现在是主机登录失败,我想应该是3306端口连接的问题解决了同时又产生了其他的问题,于是我在cmd又测试了一下

telnet 192.168.0.5 3306

确实连接到3306端口了,于是我在IDEA里以同样的方式连接数据库,获得了精确的报错信息:用户名和密码的组合不被接收,意思是密码错了。

        而我此时由于是mysql8 直接无密码登录的,在连接的时候也把密码设空。考虑到是密码的原因,于是我在虚拟机进入数据库修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' ;

但是报错 ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost’。这里把localhost改为%就能成功执行了。

        更改密码后重新连接数据库,成功。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值