在linux服务器中,连接上mysql后输入:
use mysql;
INSERT INTO `user` VALUES ('%','root','*62EDBD15E736B47E4B5BDD3CF91C4A3E2FDFA11A','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','');
flush privileges; //主要是刷新权限
就可以了。
在我解决这个问题的时候,当时我是看的网上的解决方法,虽然解决了通过外网ip登录,但是,localhost就不能够访问了,这让人很苦恼。辗转反侧之后我想到了另一个解决方法,就是上面这个!!!
如果还是不行就尝试获取这串代码在重新尝试插入数据:
('%','root','*62EDBD15E736B47E4B5BDD3CF91C4A3E2FDFA11A','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','')
这一串字符,通过把mysql数据库中的user这个数据表数据导出来(mysqldump -u账号 -p密码 数据库名 数据表名>xxx.sql)
就可以查看到Host为localhost,User为root的那一项,我们需要的就是这个值。
最后
经过我的第二次配置mysql还出现了一个问题,那就是未开3306端口。
不开这个端口还是连接不上mysql,开启方式,
查询端口号是否开启:firewall-cmd --query-port=3306/tcp
开永久端口号:firewall-cmd --add-port=3306/tcp --permanent
--permanent是指永久的意思。
关闭防火墙: systemctl stop firewalld.service
启动防火墙: systemctl start firewalld.service
关闭防火墙和启动防火墙起到重启防火墙的目的。重启防火墙后才能够生效!
最后
其实,上面的方法在某些时候是不行的,你需要:
update user set password = '' where user = root and Host = '\%';