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;
可以,发现 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;
此时,jar 应用程序重启再访问正常了。
上一篇: php 怎么增加excel数据