欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

08、Access denied for user 'root'@'192.168.1.16' to database 'test_db'

程序员文章站 2022-04-05 09:53:05
...

问题描述:

程序在本地可以正常连接 mysql 数据库,但是,通过 maven 打包成  可以执行的 jar 部署到 linux 环境上,启动就抛:

2019-12-17 15:07:34 [ERROR] - method:
com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:660)- % -- [dataSource init error] -- % 
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
 Access denied for user 'root'@'192.168.1.16' to database 'test_db'

遇到问题,先别慌。查看错误日志,看错误日志说了什么。

Access denied for user 'root'@'192.168.1.16' to database 'test_db'

翻译成中文就是:拒绝用户'root'@'192.168.1.16' 访问test_db数据库。

为什么会拒绝 root 访问呢?

有拒绝访问关键字,说明肯定和权限扯得上关系。那么,我们查看下 MySQL 用户授予的权限看看:

SELECT host,user,Grant_priv,Super_priv FROM mysql.user;

08、Access denied for user 'root'@'192.168.1.16' to database 'test_db'

 可以,发现 192.168.1.16 主机的 Grant_priv  和 Select_priv 操作权限都是 N 

Grant_priv 关键字意思:确定用户是否可以将已经授予给该用户自己的权限再授予其他用户。

例如,如果用户可以插入、选择和删除foo数据库中的信息,并且授予了GRANT权限,则该用户就可以将其任何或全部权限授予系统中的任何其他用户。

Select_priv 关键字意思:确定用户是否可以通过SELECT命令选择数据。

那么,我们可以给 192.168.1.16 这个主机设置操作权限:

UPDATE mysql. USER SET
 Grant_priv = 'Y',
 Super_priv = 'Y'
WHERE
 HOST = '192.168.1.16';

FLUSH PRIVILEGES;

08、Access denied for user 'root'@'192.168.1.16' to database 'test_db'

此时,jar 应用程序重启再访问正常了。

 

资料参考:https://www.cnblogs.com/felixzh/p/10792082.html