mysql 1045 Access denied for user jun@gateway

记一次本地使用python连接mysql出现1045, "Access denied for user 'jun'@'gateway' (using password: YES)",使用Navicat连接出现1045, "Access denied for user 'root'@'gateway' (using password: YES)", 整个人都破防了,网上查到解决方案是使用

// 使用命令行登录 mysql -u root -p;
use mysql;
update user set host = '%' where user = 'root';
-- 修改或删除了user表都需要执行此命令
flush privileges;

 这个方法确实有效,但这是个大坑,Navicat确实能连了,其他软件却都不行了,于是网上找到另外一份资料写说这个是针对mysql 8.0 的方法,我本地是mysql 5.6,这个坑。。。

于是还原了mysql 的配置,具体还原方式我是通过宝塔面板自带的还原,有执行了上面操作遇到坑的小伙伴自行找一下还原配置命令,再然后通过各种找资料,最终解决了所有工具都连不上的问题;

-- 使用GRANT ALL PRIVILEGES ON *.* TO '这里换成报错的用户名,我这里是jun,如果是root这里换成root'@'这里填ip地址,如果不想限定IP可以设置为%' IDENTIFIED BY '这里填你的数据库密码' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'jun'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
-- 这条语句会把user表里用户jun所有权限字段的值都设置为Y。
-- 如果要收回权限
revoke all privileges on *.* from 'jun'@'%';
-- 如果只想让jun只拥有test库的权限
grant all privileges on test.* to 'jun'@'%' with grant option;
-- 然后刷新
FLUSH PRIVILEGES;

最后成功连上。

-----

mysql8.0以上版本已经将创建用户和授权分两步进行了;

第一步:创建用户

create user '用户名'@'%' identified by '用户的密码';

第二步:授权

grant all privileges on *.* to '用户名'@'%';
说说我的看法