win10系统,连接远程数据库报错:Access denied for user 'root'@'xxx.xxx.xx.xxx'
代码都写完了,眼看着就要成功了,居然给我看这个???表示心塞…不过还好,在网上查了一会,最后成功解决了这个问题。
首先,在远程服务器上登录mysql:mysql -uroot -p
然后,输入命令:GRANT ALL PRIVILEGES ON *.* TO 'root'@'xxx.xxx.xx.xxx' IDENTIFIED BY 'woshimima' WITH GRANT OPTION;
此处需要强行解释一波… GRANT 权限 on 数据库名.表名 用户名@登录主机 identified by '用户密码';
ALL PRIVILEGES
表示赋给远程登录用户所有权限,*代表全部数据库/表,此处root表示要授权的用户,@后面跟具体IP表示只允许该IP访问,跟 % 表示所有IP都可以访问,最后就是在IDENTIFIED BY后面设置登录的密码。(在连接远程数据库时,需要输入上面设置的用户名和密码)
最后,再输入一条命令:FLUSH PRIVILEGES;
(大概是更新权限库吧…)
说实话具体的也不太懂,但是暂时是解决问题了,有时间的话我会好好研究的…
决定附上2个链接帮助大家理解一下,感谢这两位博主大哥…
详细参数讲解:https://www.cnblogs.com/gaogaoxingxing/p/6073699.html
举一反三型:https://www.cnblogs.com/jiyang2008/p/9016214.html
================================ 华丽分割线 ==================================
2021.11.17补充:
MySQL8.0不支持grant all privileges on *.* to 'user'@'%' identified by 'woshimima'
这种写法。
可以先创建User:create user 'user'@'xxx.xxx.xx.xxx' identified by 'woshimima'';
再授权:grant all privileges on *.* to 'user'@'xxx.xxx.xx.xxx';
(授权完了甚至可以调用上面的flush命令?)
最后还可以删除(如果有需要的话):drop user 'user'@'xxx.xxx.xx.xxx';