數據庫連接錯誤??
JdbcRealmTest 代碼如下
package?com.imooc.test; import?com.alibaba.druid.pool.DruidDataSource; import?org.apache.shiro.SecurityUtils; import?org.apache.shiro.authc.UsernamePasswordToken; import?org.apache.shiro.mgt.DefaultSecurityManager; import?org.apache.shiro.realm.jdbc.JdbcRealm; import?org.apache.shiro.realm.text.IniRealm; import?org.apache.shiro.subject.Subject; import?org.junit.Test; public?class?JdbcRealmTest?{ ????DruidDataSource?dataSource?=?new?DruidDataSource(); ????{ ????????//?dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); ????????//dataSource.setDriverClassName("com.mysql.jdbc.Driver"); ????????dataSource.setUrl("jdbc:mysql://localhost:3306/test"); ????????dataSource.setUsername("root"); ????????dataSource.setPassword("root"); ????} ????@Test ????public?void?testAuthentication()?{ ????????JdbcRealm?jdbcRealm?=?new?JdbcRealm(); ????????jdbcRealm.setDataSource(dataSource); ????????//1.構建SecurityManager環境 ????????DefaultSecurityManager?defaultSecurityManager?=?new?DefaultSecurityManager(); ????????defaultSecurityManager.setRealm(jdbcRealm); ????????//2.主體提交認證請求 ????????SecurityUtils.setSecurityManager(defaultSecurityManager); ????????Subject?subject?=?SecurityUtils.getSubject(); ????????UsernamePasswordToken?token?=?new?UsernamePasswordToken("Mark",?"123456"); ????????subject.login(token); ????????System.out.println("isAuthenticated:"?+?subject.isAuthenticated()); ????????/*subject.checkRole("admin"); ?????????subject.checkPermission("user:delete"); ?????????subject.checkPermission("user:update");*/ ????} }
?報錯如下:
四月 18, 2019 3:59:07 下午 com.alibaba.druid.pool.DruidDataSource error
嚴重: create connection SQLException, url: jdbc:mysql://localhost:3306/test, errorCode 0, state 08S01
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.GeneratedConstructorAccessor5.newInstance(Unknown Source)
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:425)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:341)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2186)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2219)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2014)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:776)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.GeneratedConstructorAccessor2.newInstance(Unknown Source)
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:425)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1510)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1575)
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2450)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:300)
... 14 more
這個意思是本地還需要有MySQL數據庫嗎?第一次接觸這個東西,不明白,跪求解答
2019-04-19
需要的
2019-08-29
請問如何解決的?
2019-04-21
已經解決了