在使用eclipse连接mysql数据库时报异常:
java.sql.sqlexception: access denied for user 'root'@'localhost' (using password: yes)
at com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:1073)
at com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.java:3609)
at com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.java:3541)
at com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.java:943)
at com.mysql.jdbc.mysqlio.secureauth411(mysqlio.java:4113)
at com.mysql.jdbc.mysqlio.dohandshake(mysqlio.java:1308)
at com.mysql.jdbc.connectionimpl.coreconnect(connectionimpl.java:2336)
at com.mysql.jdbc.connectionimpl.connectonetryonly(connectionimpl.java:2369)
at com.mysql.jdbc.connectionimpl.createnewio(connectionimpl.java:2153)
at com.mysql.jdbc.connectionimpl.<init>(connectionimpl.java:792)
at com.mysql.jdbc.jdbc4connection.<init>(jdbc4connection.java:47)
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:411)
at com.mysql.jdbc.connectionimpl.getinstance(connectionimpl.java:381)
at com.mysql.jdbc.nonregisteringdriver.connect(nonregisteringdriver.java:305)
at java.sql.drivermanager.getconnection(drivermanager.java:571)
at java.sql.drivermanager.getconnection(drivermanager.java:233)
at cn.itcast.mybatis.jdbc.jdbctest.main(jdbctest.java:36)
jdk版本:1.7.0_79,mysql为5.7,使用mysql-connector-java-5.1.18.jar。
代码如下:
import java.sql.connection; import java.sql.drivermanager; import java.sql.preparedstatement; import java.sql.resultset; import java.sql.sqlexception; /** * * @author lilia * */ public class jdbctest { //mysql数据库地址 private static final string url = "jdbc:mysql://localhost:3306/mybatis?characterencoding=utf-8"; //mysql数据库用户名 private static final string username = "root"; //myslq数据库密码 private static final string password = "root"; public static void main(string[] args) { //数据库连接 connection connection = null; //预编译的statement(使用预编译的statement可以提高数据库的性能) preparedstatement preparedstatement = null; //结果集对象 resultset resultset = null; try { //加载数据驱动 class.forname("com.mysql.jdbc.driver"); //通过驱动管理类获取数据库连接 connection = drivermanager.getconnection(url, username, password); //定义sql语句 string sql = "select * from user where username = ?"; //获取预处理statement,并把sql放入到statement中。 preparedstatement = connection.preparestatement(sql); //参数赋值,序号从1开始 preparedstatement.setstring(1, "王五"); //向数据库发出sql执行查询,并返回查询结果集 resultset = preparedstatement.executequery(); while (resultset.next()) { system.out.println(resultset.getstring("id") + ":" + resultset.getstring("username")); } } catch (exception e) { e.printstacktrace(); } finally { //释放资源 if (resultset != null) { try { resultset.close(); } catch (sqlexception e) { e.printstacktrace(); } } if(preparedstatement != null){ try { preparedstatement.close(); } catch (sqlexception e) { e.printstacktrace(); } } if(connection != null){ try { connection.close(); } catch (sqlexception e) { e.printstacktrace(); } } } } }
执行后报错如上。
网上搜索很多解决方案行不通,最终找到问题所在:root帐户默认不开放远程访问权限,所以需要修改一下相关权限。,参考:
具体解决步骤如下:
问题解决。
如对本文有疑问, 点击进行留言回复!!
MySQL-关系代数-并、交、差、等值连接、自然连接、左连接。。。
【MySQL牛客】10.获取所有非manager的员工emp_no
网友评论