【问题标题】:Access denied for user 'app'@'10.200.100.100' (using password: YES)用户'app'@'10.200.100.100'的访问被拒绝(使用密码:是)
【发布时间】:2016-05-09 03:33:48
【问题描述】:

我正在尝试从我的应用程序连接到 mysql db。我遇到了一个奇怪的问题。我尝试搜索所有论坛,但找不到类似的问题。我有一个名为 app 的用户,并被授予从“%”连接的权限,我理解它是从任何 IP 连接。我可以从我的 mysql 工作台(远程机器)连接。但是当我尝试从我的应用程序服务器连接到数据库时,我遇到了以下错误。密码正确,服务器配置正确。我的机器也是一台远程机器,我可以毫无问题地连接。我的应用程序是带有休眠功能的弹簧启动。请对此提供帮助。我是否必须专门为此 IP 授予特权?

Caused by: java.sql.SQLException: Access denied for user 'app'@'10.200.100.100' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1215)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2255)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:208)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:153)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:144)
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:155)
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:120)
    at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:139)
    at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:380)
    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:228)
    ... 67 more

【问题讨论】:

  • 最有可能解释它作为不同的用户连接。我建议您检查可能的其他匹配项。 MySQL 有一个特定的顺序来寻找匹配的用户。它可能在到达'app'@'%' 之前匹配用户。我建议您检查其他用户 SELECT user, host FROM mysql.user ORDER BY user, host。另外,在 MySQL 中是否禁用了反向 DNS 查找?即 --skip-name-resolve
  • 您是否尝试在连接失败的同一台机器上通过 MySQL CLI 进行连接?

标签: java mysql hibernate spring-boot


【解决方案1】:

修改权限后别忘了刷新权限。

刷新权限

【讨论】:

  • 我已经刷了,即使我尝试过重启数据库。
【解决方案2】:

你可以试试这个给予特权

将 databasename.* 上的所有权限授予由“yourpassword”标识的 app@10.200.100.100;

【讨论】:

    猜你喜欢
    • 2018-08-20
    • 2011-08-06
    • 2013-06-11
    • 2013-11-03
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    相关资源
    最近更新 更多