【开发日志】ubuntu 16 下 MySQL Access denied for user 'root'@'localhost'

问题背景

在 ubuntu 16 系统中部署 Tomcat 发布 SpringBoot 项目,运行起来后,前端网页访问后台出现报错:java.sql.SQLException: Access denied for user 'root'@'localhost'.

解决方法

因为密码是没问题的,所以不考虑密码错误的原因。
经搜索,再此篇文章找到:https://blog.ndk.name/change-mysql-server-authentication-plugin-for-root-user/ 一种可能情况:MySQL 的默认授权模式为 auth_socket 或者是 unix_socket 而不是密码形式进行登录授权的,所以要改变授权方式。
查看 MySQL 系统用户表:

SELECT user, authentication_string, plugin, host from mysql.user;

修改 plugin 字段为 mysql_native_password:

 UPDATE mysql.user SET plugin = 'mysql_native_password', authentication_string = PASSWORD('your_password') WHERE User = 'pc';

之后执行语句刷新一下
FLUSH PRIVILEGES;

注意我没有修改 root 用户,而是新建了两个用户,修改了这两个用户的 plugin 字段。
补充:添加用户方法:

 CREATE USER 'test'@'localhost' IDENTIFIED WITH mysql_native_password;

通过修改好 user 的 plugin 字段类型,设置好密码后, 项目就可以顺利访问到数据库了。问题解决。另外如果是新创建的用户,记得授予对要访问的数据库的权限:

grant all privileges on database_name.table_name to 'test'@'localhost';

database_name 和 table_name 可分别取通配符 *。

posted @   Skipper-  Views(104)  Comments(0Edit  收藏  举报
编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
点击右上角即可分享
微信分享提示