mysql8的安装配置以及JDBC使用

摘要

  • 基于windows下mysql 8.0.*版本安装以及配置等操作介绍
    • 基本安装
    • 初始化
    • 密码重置
    • 创建数据库
    • 创建列表
  • 以及书本《Java简明教程》实列代码的采坑

安装

  1. 从mysql官网下载mysql社区版本

    这里选择的时二进制安装文件,就是需要配置环境变量的那种下载 下载的时候选择第一个,第二个是测试版。坑:在你点击下载之后会教你login一类的,你可以忽略它们找到下面一排英文“No thanks,just start my download”就可以正式下载

    下载完成之后解压,将这个文件夹放到你想要的位置,列如E盘下。接着根据你选择的位置配置环境变量。如:

    1
    
    E:\mysql-8.0.13-winx64\bin
    

    不会配置环境变量???

  2. 如果你是用可执行安装包安装,即msi文件安装请参照这个

配置

  1. 进入myql的安装目录(就是你放加压后文件夹的地方),找到里面的bin文件夹。

    在该文件夹下点击窗体左上方文件 -> 找到“打开powershell” -> 选择“以管理员身份打开powershell” -> 运行如下命令

    1
    
    mysqld --initialize-insecure --console
    
  • --initialize-insecure参数是为了初始化一个没有初始密码的数据库

  • --console参数显示初始化结果,方便出现问题后应对。

  • 如果你初始化失败,请把错误信息给你想要请教的人看,而不是直接告诉别人你安装不了,掌握问问题的方法也很关键。

  • 坑:出现缺少XXX140.dll,请安装这个

  • 类似问题安装c++运行库解决

  • 坑:初始化提示无法读写文件,创建文件问题。确保你是管理员权限的命令行

  • 坑:初始化失败,可以尝试删除mysql安装文件夹下的data文件夹重试

  • 你也可以使用这个命令初始化mysql

    1
    
    mysqld --initialize --console
    

    这个命令在初始化过程中(如果成功)会输出一个随机密码,请务必记住他,否则你就得尝试重置密码了。

  1. 安装服务

    在上一步执行没有报错之后,继续输入

    1
    
    mysqld install
    

    安装mysql的系统服务,再次重申,请确保你的命令行具有管理员权限!!!

  2. 启动服务

    1
    
    net start mysql
    

    坑:提示启动失败请尝试删除mysql服务 mysqld remove 并回到第一步重新初始化(这个过程中可能还需要删除mysql安装目录中的data文件夹)

  3. 第一次启动数据库修改密码

    • 如果你是使用了--initialize-insecure参数初始化的数据库的话,那么数据库默认没有密码,直接在命令行输入

      1
      
      mysql -u root -p
      

      出现输入密码提示后按下回车即可。

    • 使用--initialize参数初始化的请输入初始化过程中输出的随机密码

  4. 修改密码

    1
    
    ALTER user 'root'@'local' IDENTIFIED BY 'your_password你的密码';
    

    坑:数据库命令大小写其实无所谓,可以都是小写。别忘了末尾的分号

  5. 数据库的基本操作:

    • 新建数据库
    1
    
    create database 你要新建的数据库的名字;
    
    • 展示所有数据库
    1
    
    show databases;
    
    • 切换数据库
    1
    
    use 你要切换的数据库的名字
    

    坑:这里有没有分号无所谓,其他数据库语句必须分号结尾

    • 新建表
    1
    2
    3
    4
    5
    
    create table 表名(key1 key_type,key2 key_type,key3 key_type);
    
    实例:
    
    create table student(no VARCHAR(20,name VARCHAR(20),math INT,average DOUBLE);
    
    • 展示表中所有数据:
    1
    
    select * from 表名;
    
    • 打印表内数据格式:
    1
    
    desc 表名;
    

    更多命令

    坑:数值类型详解

    坑:请先切换到你要创建表的数据库再执行创建表明操作

java连接数据库

  1. 在mysql官网下载mysql connector的java sdk.请按照你的数据库版本下载对应的connector 下载地址

    “Select Operating System”选项请选择“Platform Independent”.

    下载第一个还是第二个只是压缩包格式的不同

    下载点击进去之后请点击“No thanks, just start my download.”开始下载

  2. 下载完成之后解压,打开解压后的文件夹,找到一个*.jar后缀的文件列如:

    1
    
    mysql-connector-java-8.0.13.jar
    

    将该文件复制到你的eclipse中的java项目里

    坑:什么你不知道你的eclipse项目目录在哪里???默认就在c:\用户\你的用户名\eclise-workplace里,对,打开哪个文件夹,找到你写的那个项目的名字,把这个jar文件放进去!!!

  3. 将jar文件加入你的java项目

    在eclipse里右键你写的项目,选择new->选择Sourse Folder,随便起个名字你开心就好->把你的那个jar文件再放进去(别问我怎么放,打开你的电脑) 百度知道图解(百度知道没有选择创建source folder文件夹,我建议你这里选择这个)

  4. 书本范例代码的问题

    • 新版的mysql数据库connector驱动包全名:
    1
    
    com.mysql.cj.jdbc.Driver
    
    • 数据库连接url格式:
    1
    
    jdbc:mysql://localhost:3306/数据库名称?serverTimezone=UTC
    
  • 坑:mysql8.0.x新版在java调用时要增加参数化serverTimezone=UTC,设置数据库时间为世界标准时间,否则会报以下错误

    1
    
        Caused by: java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
    
    • 连接数据库出现access deny字样
    1
    
    DriverManger.getConnection(DB_URL,USER,PASS)
    

    DB_URL就是上面提到的url格式内容。

    USER默认"root",PASS如果为空则使用空字符串即可,有密码请确保密码正确

数据库连接代码示例

请确保已经将mysqlconnector加入项目构建目录,参照将jar文件加入你的java项目

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public class MySQLDemo {
 
    // JDBC 驱动名及数据库 URL
    static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";  
    static final String DB_URL = "jdbc:mysql://localhost:3306/RUNOOB";//RUNOOB为数据库(database)名称
 
    // 数据库的用户名与密码,需要根据自己的设置
    static final String USER = "root";
    static final String PASS = "123456";
 
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try{
            // 注册 JDBC 驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
        
            // 打开链接
            System.out.println("连接数据库...");
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
        
            // 执行查询
            System.out.println(" 实例化Statement对象...");
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT id, name, url FROM websites";//构建sql语句 id name url均为字段名 websites表名
            ResultSet rs = stmt.executeQuery(sql);//执行sql语句并获取返回结果
        
            // 展开结果集数据库
            while(rs.next()){
                // 通过字段检索
                int id  = rs.getInt("id");
                String name = rs.getString("name");
                String url = rs.getString("url");
    
                // 输出数据
                System.out.print("ID: " + id);
                System.out.print(", 站点名称: " + name);
                System.out.print(", 站点 URL: " + url);
                System.out.print("\n");
            }
            // 完成后关闭
            rs.close();
            stmt.close();
            conn.close();
        }catch(SQLException se){
            // 处理 JDBC 错误
            se.printStackTrace();
        }catch(Exception e){
            // 处理 Class.forName 错误
            e.printStackTrace();
        }finally{
            // 关闭资源
            try{
                if(stmt!=null) stmt.close();
            }catch(SQLException se2){
            }// 什么都不做
            try{
                if(conn!=null) conn.close();
            }catch(SQLException se){
                se.printStackTrace();
            }
        }
        System.out.println("Goodbye!");
    }
}
updatedupdated2025-04-162025-04-16