1. 发现Navicat连接不上MySQL,总是报错1251
原因:
MySQL8.0版本的加密方式和MySQL5.0的不一样,连接会报错。
解决方案:
步骤一:搜索cmd,以管理员身份运行
步骤二:输入以下命令:
C:\Windows\system32> mysql -uroot -p
再输入root的密码:(自己设置的)
再输入下面两条指令就可以连接上Navicat
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
2.连接数据库出现的问题:(使用8.0及8.0以上的JDBC驱动)
相对以前版本特别需要注意到的:
package testConnection;
import java.sql.*;
public class TestConnection {//创建Login类,保证文件名与类名相同
Connection con;//声明Connection对象
Statement sql;
ResultSet res;
public static final String url = "jdbc:mysql://localhost:3306/hz?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false";
public static final String name = "com.mysql.cj.jdbc.Driver";
public static final String user = "root";
public static final String password = "123456";
public Connection getConnection() { //建立返回值为Connection的方法
try { //加载数据库驱动类
Class.forName(name);
System.out.println("数据库驱动加载成功");
con=DriverManager.getConnection(url,user,password);//通过访问数据库的URL获取数据库连接对象
System.out.println("数据库连接成功");
}catch(Exception e) {
e.printStackTrace();
}
return con;//按方法要求返回一个Connection对象
}
public static void main(String[] args) { //主方法
TestConnection c = new TestConnection(); //创建本类方法
c.getConnection();//调用连接数据库的方法
}
}