zoukankan      html  css  js  c++  java
  • 【Druid】access denied for user ''@'ip'

    今天在写单元测试时,遇到一个很奇葩的问题,一直在报这样的错误:

    Caused by: java.sql.SQLException: Access denied for user ''@'183.134.103.169' (using password: YES)
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
    	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847)
    	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783)
    	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871)
    	at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1665)
    	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1207)
    	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2249)
    	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2280)
    	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2079)
    	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
    	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:400)
    	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
    	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
    	at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:148)
    	at com.alibaba.druid.filter.FilterAdapter.connection_connect(FilterAdapter.java:785)
    	at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:142)
    	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1423)
    	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1477)
    	at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:677)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1640)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1581)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1511)
    	... 62 more
    

    分析来分析去,总是找不到错误的原因。于是想到,难道是Druid的配置问题?

    于是重新看了下spring的数据库配置,

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
            <property name="url" value="${db.url}"/>
            <property name="name" value="${db.user}"/>
            <property name="password" value="${db.password}"/>
            <property name="initialSize" value="${db.initialSize}"/>
            <property name="minIdle" value="${db.maxIdle}"/>
            <property name="maxActive" value="${db.maxActive}"/>
            <property name="maxWait" value="${db.maxWait}"/>
            <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
            <property name="timeBetweenEvictionRunsMillis" value="60000"/>
            <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
            <property name="minEvictableIdleTimeMillis" value="60000"/>
            <property name="validationQuery" value="SELECT 'x'"/>
            <property name="testWhileIdle" value="true"/>
            <property name="testOnBorrow" value="false"/>
            <property name="testOnReturn" value="false"/>
            <property name="filters" value="config"/>
            <property name="connectionProperties" value="config.decrypt=true"/>
            <!-- 每隔5分钟将监控日志输出到日志文件中,单位是毫秒。 -->
            <property name="timeBetweenLogStatsMillis" value="300000"/>
        </bean>
    

    发现name这个属性感觉不太对劲,于是查阅文档。

    原来这边配置的链接用户名应该是userName,而不是name。改为userName立刻解决问题,于是mark一下。

  • 相关阅读:
    使用 Dockerfile 定制镜像
    UVA 10298 Power Strings 字符串的幂(KMP,最小循环节)
    UVA 11090 Going in Cycle!! 环平均权值(bellman-ford,spfa,二分)
    LeetCode Best Time to Buy and Sell Stock 买卖股票的最佳时机 (DP)
    LeetCode Number of Islands 岛的数量(DFS,BFS)
    LeetCode Triangle 三角形(最短路)
    LeetCode Swap Nodes in Pairs 交换结点对(单链表)
    LeetCode Find Minimum in Rotated Sorted Array 旋转序列找最小值(二分查找)
    HDU 5312 Sequence (规律题)
    LeetCode Letter Combinations of a Phone Number 电话号码组合
  • 原文地址:https://www.cnblogs.com/f-zhao/p/7299103.html
Copyright © 2011-2022 走看看