java.sql.SQLException: Access denied for user 'Administrator'@'192.168.5.103' (using password: YES)

本文介绍了一个关于MySQL数据库连接的问题及解决方法。通过调整配置文件中的用户名等参数,并更新spring-resource.xml文件中的相应属性,最终成功解决了连接异常的问题。

jdbc.properties配置信息

driverClasss=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://locahost:3306/test?luseUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
username=root
password=123456
#\u5B9A\u4E49\u521D\u59CB\u8FDE\u63A5\u6570
initialSize=0
#\u5B9A\u4E49\u6700\u5927\u8FDE\u63A5\u6570
maxActive=20
#\u5B9A\u4E49\u6700\u5927\u7A7A\u95F2
maxIdle=20
#\u5B9A\u4E49\u6700\u5C0F\u7A7A\u95F2
minIdle=1
#\u5B9A\u4E49\u6700\u957F\u7B49\u5F85\u65F6\u95F4
maxWait=60000
#\u7528\u4E8E\u9A8C\u8BC1\u8FDE\u63A5\u662F\u5426\u6210\u529F
validationQuery=select current_date()
#\u7A7A\u95F2\u65F6\u662F\u8FDB\u884C\u9A8C\u8BC1\uFF0C\u68C0\u67E5\u5BF9\u8C61\u662F\u5426\u6709\u6548
testWhileIdle=true
#\u6BCF30\u79D2\u8FDB\u884C\u4E00\u6B21\u68C0\u9A8C
timeBetweenEvictionRunsMillis=30000
#\u5728\u8FDB\u884C\u540E\u53F0\u5BF9\u8C61\u6E05\u7406\u65F6\uFF0C\u6BCF\u6B21\u68C0\u67E530\u4E2A\u94FE\u63A5
numTestsPerEvictionRun=20
#\u6BCF\u6B21\u68C0\u9A8C\u4E2D\u5C06\u8D85\u8FC730\u5206\u949F\u5904\u4E8E\u7A7A\u95F2\u7684\u8FDE\u63A5\u65AD\u5F00
minEvictableIdleTimeMillis=1800000


spring-resource.xml配置信息

    <context:property-placeholder  location="classpath:/spring/jdbc.properties" ignore-unresolvable="true"/>

    <import resource="classpath:springRedis.xml"></import>
    
    <!-- 配置数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" >
        <property name="driverClassName" value="${driverClasss}"/>
        <property name="url" value="${jdbcUrl}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
        <!-- 初始化连接大小 -->
        <property name="initialSize" value="${initialSize}"></property>
        <!-- 连接池最大数量 -->
        <property name="maxActive" value="${maxActive}"></property>
        <!-- 连接池最大空闲 -->
        <property name="maxIdle" value="${maxIdle}"></property>
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="${minIdle}"></property>
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="${maxWait}"></property>
        <!-- 验证连接是否成功的查询SQL语句 -->
        <property name="validationQuery" value="${validationQuery}" />
        <!-- 空闲时是进行验证 检查对象是否有效 -->
        <property name="testWhileIdle" value="${testWhileIdle}" />
        <!-- 进行一次连接检验的时间 -->
        <property name= "timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}" />
        <!-- 在进行后台对象清理时 每次检查多少个链接 -->
        <property name= "numTestsPerEvictionRun" value="${numTestsPerEvictionRun}" />
        <!-- 每次检验中将超过多长时间处于空闲的连接断开 -->
        <property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}" />
    </bean>


启动一切正常,访问出现如下错误:

java.sql.SQLException: Access denied for user 'Administrator'@'192.168.5.103' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:910)
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3923)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1273)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2031)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)


解决办法:

修改jdbc.properties配置信息

driverClasss=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://locahost:3306/test?luseUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
name=root
password=123456
#\u5B9A\u4E49\u521D\u59CB\u8FDE\u63A5\u6570
initialSize=0
#\u5B9A\u4E49\u6700\u5927\u8FDE\u63A5\u6570
maxActive=20
#\u5B9A\u4E49\u6700\u5927\u7A7A\u95F2
maxIdle=20
#\u5B9A\u4E49\u6700\u5C0F\u7A7A\u95F2
minIdle=1
#\u5B9A\u4E49\u6700\u957F\u7B49\u5F85\u65F6\u95F4
maxWait=60000
#\u7528\u4E8E\u9A8C\u8BC1\u8FDE\u63A5\u662F\u5426\u6210\u529F
validationQuery=select current_date()
#\u7A7A\u95F2\u65F6\u662F\u8FDB\u884C\u9A8C\u8BC1\uFF0C\u68C0\u67E5\u5BF9\u8C61\u662F\u5426\u6709\u6548
testWhileIdle=true
#\u6BCF30\u79D2\u8FDB\u884C\u4E00\u6B21\u68C0\u9A8C
timeBetweenEvictionRunsMillis=30000
#\u5728\u8FDB\u884C\u540E\u53F0\u5BF9\u8C61\u6E05\u7406\u65F6\uFF0C\u6BCF\u6B21\u68C0\u67E530\u4E2A\u94FE\u63A5
numTestsPerEvictionRun=20
#\u6BCF\u6B21\u68C0\u9A8C\u4E2D\u5C06\u8D85\u8FC730\u5206\u949F\u5904\u4E8E\u7A7A\u95F2\u7684\u8FDE\u63A5\u65AD\u5F00


修改spring-resource.xml配置信息

    <context:property-placeholder  location="classpath:/spring/jdbc.properties" ignore-unresolvable="true"/>

    <import resource="classpath:springRedis.xml"></import>
    
    <!-- 配置数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" >
        <property name="driverClassName" value="${driverClasss}"/>
        <property name="url" value="${jdbcUrl}"/>
        <property name="username" value="${name}"/>
        <property name="password" value="${password}"/>
        <!-- 初始化连接大小 -->
        <property name="initialSize" value="${initialSize}"></property>
        <!-- 连接池最大数量 -->
        <property name="maxActive" value="${maxActive}"></property>
        <!-- 连接池最大空闲 -->
        <property name="maxIdle" value="${maxIdle}"></property>
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="${minIdle}"></property>
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="${maxWait}"></property>
        <!-- 验证连接是否成功的查询SQL语句 -->
        <property name="validationQuery" value="${validationQuery}" />
        <!-- 空闲时是进行验证 检查对象是否有效 -->
        <property name="testWhileIdle" value="${testWhileIdle}" />
        <!-- 进行一次连接检验的时间 -->
        <property name= "timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}" />
        <!-- 在进行后台对象清理时 每次检查多少个链接 -->
        <property name= "numTestsPerEvictionRun" value="${numTestsPerEvictionRun}" />
        <!-- 每次检验中将超过多长时间处于空闲的连接断开 -->
        <property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}" />
    </bean>


最后从起tomcat,访问项目,一切正常


Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary. java.sql.SQLException: Access denied for user 'video_monitoring'@'192.168.2.118' (using password: YES) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:829) at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:449) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:242) at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:247) at TestMySQLConnection.testConnection(TestMySQLConnection.java:29) 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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210) 连接数据库失败,错误详情: Access denied for user 'video_monitoring'@'192.168.2.118' (using password: YES)
最新发布
09-22
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) 是一个常见的数据库连接错误,表示用户'root'在本地主机上使用了错误的密码进行连接。 解决这个问题的方法有以下几种: 1. 确保用户名和密码正确:首先,确保你使用的用户名和密码是正确的。检查你的数据库配置文件或者数据库管理工具中的用户名和密码是否与你尝试连接的数据库一致。 2. 检查数据库权限:如果用户名和密码是正确的,但仍然无法连接数据库,可能是因为该用户没有足够的权限访问数据库。请确保该用户具有正确的权限,包括连接数据库和执行所需的操作。 3. 检查数据库连接字符串:检查你的数据库连接字符串是否正确。确保连接字符串中的用户名、密码和数据库名称都是正确的。 4. 检查数据库服务器配置:如果以上方法都没有解决问题,可能是因为数据库服务器的配置有问题。请检查数据库服务器的配置文件,确保允许远程连接,并且没有其他限制。 5. 检查防火墙设置:有时候,防火墙设置可能会阻止数据库连接。请确保你的防火墙允许数据库连接。 6. 重置密码:如果你确信用户名和密码是正确的,但仍然无法连接数据库,可以尝试重置密码。使用数据库管理工具或者命令行工具重置密码,并更新你的应用程序中的连接信息。 这些方法应该能够帮助你解决java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)错误。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值