【Java学习笔记】54:CentOS下安装MySQL的JDBC驱动并尝试连接

本文详细介绍如何在Linux环境下启动MySQL服务,创建数据库与数据表,并通过Java JDBC实现数据查询。包括MySQL服务启动步骤、数据库及数据表创建命令、数据插入与查询操作,以及JDBC驱动配置与数据查询示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备工作

打开MySQL服务
[root@hostlzh lzh]# mysqld_safe &
[1] 21768
[root@hostlzh lzh]# 180209 12:55:11 mysqld_safe Logging to '/var/log/mysqld.log'.
180209 12:55:11 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
新建数据库

注意数据库名,表名,字段名等如果要加引号,在MySQL里加的是反引号

mysql> CREATE DATABASE IF NOT EXISTS `testJDBC` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
| testJDBC           |
+--------------------+
4 rows in set (0.02 sec)
新建数据表
mysql> USE testJDBC;
Database changed
mysql> CREATE TABLE `MyUsr`
    -> (
    -> `id` SMALLINT NOT NULL,
    -> `name` CHAR(4) NOT NULL,
    -> `age` SMALLINT,
    -> PRIMARY KEY(`id`)
    -> );
Query OK, 0 rows affected (0.10 sec)

mysql> SHOW TABLES;
+--------------------+
| Tables_in_testJDBC |
+--------------------+
| MyUsr              |
+--------------------+
1 row in set (0.00 sec)
插入一些数据
mysql> INSERT INTO `MyUsr`
    -> (id,name,age)
    -> VALUES
    -> (1,'lzh',20),
    -> (2,'pikachu',4),
    -> (3,'aaa',19);
Query OK, 3 rows affected, 1 warning (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 1
确认一下
mysql> SELECT * FROM MyUsr;
+----+------+------+
| id | name | age  |
+----+------+------+
|  1 | lzh  |   20 |
|  2 | pika |    4 |
|  3 | aaa  |   19 |
+----+------+------+
3 rows in set (0.00 sec)

安装MySQL驱动

教材上用的windows系统,把驱动放在jdk的lib目录下的扩展目录(ext目录)之下,但是我的linux下的jdk没有找到ext目录。

[root@hostlzh jdk1.8.0_11]# ls
bin             jre          release
COPYRIGHT       lib          src.zip
db              LICENSE      THIRDPARTYLICENSEREADME-JAVAFX.txt
include         man          THIRDPARTYLICENSEREADME.txt
javafx-src.zip  README.html
[root@hostlzh jdk1.8.0_11]# ls ./lib
ant-javafx.jar  ir.idl         missioncontrol  visualvm
ct.sym          javafx-mx.jar  orb.idl
dt.jar          jconsole.jar   sa-jdi.jar
i386            jexec          tools.jar

总之先下载下来,/connector/j/意思就是给JDBC用的驱动,我选择了Platform Independent(平台独立的)tar包。

把下载好的.tar.gz包解压,在文件夹里就能看到jar包,我的是mysql-connector-java-5.1.45-bin.jar,这个jar包的路径暂时就不要动了。

新建一个工程,右键BuildPathAdd External Archives...,选择这个jar包确定,这个jar包就被引用到这个工程里了,驱动就可以用了。

这时工程中也多了一个Referenced Libraries目录:

还有一种方式是去修改CLASSPATH,我怕会影响我的linux系统使用的老版本java环境,暂时还是用前面这种保守的方式吧。

尝试连接

暂时先不去深究,能连上才能用啊。

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Main {

    public static void main(String[] args) {
        try {
            // 要求JVM查找并加载指定的类
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        // 声明一个sql连接对象
        java.sql.Connection con = null;
        String uri = "jdbc:mysql://127.0.0.1:3306/testJDBC? useSSL=true";
        String user = "root";
        String password = "3838438";
        try {
            // 和指定的数据库建立连接
            con = DriverManager.getConnection(uri, user, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            // 用Statement声明一个SQL语句对象,用createStatement()创建之
            java.sql.Statement sql = con.createStatement();
            // 对数据库进行查询,返回ResultSet对象
            ResultSet rs = sql.executeQuery("SELECT * FROM MyUsr");
            // 一行一行查看查询结果
            while (rs.next()) {
                int id = rs.getInt(1);
                String name = rs.getString(2);
                int age = rs.getInt(3);
                System.out.println(id + " " + name + " " + age);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        // 最后关闭连接
        try {
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

}

输出

1 lzh 20
2 pika 4
3 aaa 19

这是相当于把数据库和后端查询数据库的程序都放在一台主机上,所以不用考虑网络问题,而且地址只要写本地环回地址127.0.0.1就可以了。

### 安装和配置 MySQL JDBC 驱动 要在 CentOS 7 上安装和配置 MySQL JDBC 驱动程序,可以按照以下方法操作: #### 1. 下载 MySQL JDBC 驱动 访问官方的 MySQL Connector/J 页面下载适合的驱动版本。根据目标操作系统选择合适的压缩包格式: - 对于 Linux 系统(如 CentOS),推荐下载 **Platform Independent (Architecture Independent), Compressed TAR Archive** 的 tar.gz 文件[^1]。 下载链接可以通过以下 URL 访问:`https://downloads.mysql.com/archives/c-j/` 假设选择了 `mysql-connector-java-8.0.xx.tar.gz` 版本。 #### 2. 解压放置驱动文件 解压已下载的 `.tar.gz` 文件至合适位置,例如 `/usr/share/java/mysql-connector-java.jar` 或者项目的库目录下: ```bash tar -zxvf mysql-connector-java-8.0.xx.tar.gz -C /tmp/ cp /tmp/mysql-connector-java-8.0.xx/mysql-connector-java-8.0.xx.jar /usr/share/java/mysql-connector-java.jar ``` #### 3. 将 JAR 添加到 Java 类路径 如果使用的是 IDE(如 IntelliJ IDEA),可以直接将该 JAR 文件添加到项目依赖中。如果是通过命令行运行应用程序,则需设置 `-classpath` 参数或将 JAR 放置在 `$CLASSPATH` 中。 示例命令如下: ```bash export CLASSPATH=$CLASSPATH:/usr/share/java/mysql-connector-java.jar javac YourJavaProgram.java java YourJavaProgram ``` #### 4. 测试连接 编写简单的 Java 程序验证驱动是否正常工作。以下是基本代码框架: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class TestMySQLConnection { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/testdb"; String user = "root"; String password = "your_password"; try (Connection conn = DriverManager.getConnection(url, user, password)) { if (conn != null) { System.out.println("Connected to the database!"); } } catch (SQLException e) { System.err.format("SQL State: %s\n%s", e.getSQLState(), e.getMessage()); } } } ``` 编译执行以上脚本即可确认驱动加载无误以及能够成功建立数据库连接。 #### 5. 开启必要的服务与端口 确保 MySQL 数据库正在运行,允许外部访问其默认端口 (`3306`) 。可通过下面这些指令控制服务状态及调整防火墙规则[^2]: ```bash systemctl start mysqld.service # 启动 MySQL 服务 firewall-cmd --zone=public --add-port=3306/tcp --permanent # 打开端口 3306 firewall-cmd --reload # 刷新防火墙配置 ``` --- ### 注意事项 有时可能会遇到因 Hadoop 集群未启动而导致无法完成某些 Hive 操作的情况;这非直接关联到 MySQL JDBC 设置本身,而是环境搭建中的其他部分存在问题[^4]。另外,在实际部署过程中还应注意不同版本间兼容性问题,比如特定版本间的差异可能影响最终效果[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值