j2ee远程连接mysql方法和常见问题

应用环境:

服务器-CentOS 8 ;Tomcat 9;mysql  Ver 8.0.17;

客户端(开发环境)-Windows 10;工具:eclipse 2020-06;

首先,每步要配置jdbc,jdbc下载地址:https://repo1.maven.org/maven2/mysql/mysql-connector-java/,根据自己使用的jdk和mysql的版本选择jdbc的版本,我这里用的最新的版本,具体的版本对应情况如下:

Summary of Connector/J Versions

Connector/J version JDBC version MySQL Server version JRE Required JDK Required for Compilation Status
5.1 3.0, 4.0, 4.1, 4.2 5.61, 5.71, 8.01 JRE 5 or higher1 JDK 5.0 AND JDK 8.0 or higher2, 3 General availability
8.0 4.2 5.6, 5.7, 8.0 JRE 8 or higher JDK 8.0 or higher2 General availability. Recommended version.

Notes

1 JRE 8 or higher is required for Connector/J 5.1 to connect to MySQL 5.6, 5.7, and 8.0 with SSL/TLS when using some cipher suites.

2 A customized JSSE provider might be required to use some later TLS versions and cipher suites when connecting to MySQL servers. For example, because Oracle's Java 8 is shipped with a JSSE implementation that only supports TLSv1.2 and lower, you need a customized JSSE implementation to use TLSv1.3 on Oracle's Java 8 platform.

3 If you are building Connector/J 5.1 from source code using the source distribution, you must have both JDK 8.0 or higher AND JDK 5.0 installed. It is also good to have JRE 6 for compiling Connector/J 5.1. See Section 3.4, “Installing from Source” for details.

把下载到的适用版本的jdbc放到tomcat目录下的lib文件夹下,并重启tomcat。

数据库连接代码:

Class.forName("com.mysql.jdbc.Driver"); //驱动程序名
            String url="jdbc:mysql://192.168.2.111:3306/umsdb"; //数据库名
            String dbuname="unimagic";  //数据库用户名
            String dbpwd="qqmars";  //数据库用户密码
            Connection conn=DriverManager.getConnection(url,dbuname,dbpwd);  //连接状态
            if(conn!=null){
                out.println("数据库连接成功!<br>");
                Statement stmt=null;
                ResultSet rs=null;
                String sql="select * from users;";  //查询语句
                stmt=conn.createStatement();
                rs=stmt.executeQuery(sql);
                out.print("查询结果:");
                out.print("<br />"); 
                out.println("序号"+"  "+"用户名 "+"  "+"密码"+"  "+"电子邮件"+"  "+"级别");
                out.print("<br />");
                while (rs.next()) {
                    out.println(rs.getInt("userid")+"   &nbsp  "+rs.getString("username")+"  &nbsp "+rs.getString("passwd")+"  &nbsp "+rs.getString("email")+"  &nbsp "+rs.getInt("grade")+"<br>"); //将查询结果输出
                }
                conn.close();
            }else{
                out.print("连接失败!"); 
            }

执行后的结果:

数据库连接成功!

常见问题:

1、如果tomcat服务器和mysql服务器是分离的,需要设置mysql用户的访问权限,因为默认是localhost,可以使用mysql命令:

update mysql.user set host='%' where user='testuser'; 

这样才可以用testuser用户访问指定数据库,为安全起见,最好为远程用户指定数据库访问权限:

 create user testuser identified by 'testuser';

 grant all privileges on umsdb.* to testuser@'%';

这样就可以使用testuser远程连接mysql数据库了。

2、linux系统防火墙问题,我使用的CentOS服务器的mysql服务端口3306是默认关闭的,需要手工打开一下:

firewall-cmd --add-port=3306/tcp --permanent #永久增加3306例外(全局)

firewall-cmd --reload #重启防火墙(修改配置后要重启防火墙)

3、读取数据库数据时要对应数据类型,否则会报错;

rs.getInt("userid")+"   &nbsp  "+rs.getString("username")+"  &nbsp "+rs.getString("passwd")+"  &nbsp "+rs.getString("email")+"  &nbsp "+rs.getInt("grade")+"<br>"  //获取数据记录的方法类型与数据库中对应项目的数据类型必须一致。

常用知识点:

1、CentOS系统防火墙命令集:

1、安装
yum install iptables-services #安装iptables
2、systemctl使用
systemctl unmask firewalld #执行命令,即可实现取消服务的锁定
systemctl mask firewalld # 下次需要锁定该服务时执行
systemctl start firewalld.service #启动防火墙
systemctl stop firewalld.service #停止防火墙
systemctl reloadt firewalld.service #重载配置
systemctl restart firewalld.service #重启服务
systemctl status firewalld.service #显示服务的状态
systemctl enable firewalld.service #在开机时启用服务
systemctl disable firewalld.service #在开机时禁用服务
systemctl is-enabled firewalld.service #查看服务是否开机启动
systemctl list-unit-files|grep enabled #查看已启动的服务列表
systemctl --failed #查看启动失败的服务列表
3、firewall-cmd使用
firewall-cmd --state #查看防火墙状态
firewall-cmd --reload #更新防火墙规则
firewall-cmd --state #查看防火墙状态
firewall-cmd --reload #重载防火墙规则
firewall-cmd --list-ports #查看所有打开的端口
firewall-cmd --list-services #查看所有允许的服务
firewall-cmd --get-services #获取所有支持的服务
#区域相关
firewall-cmd --list-all-zones #查看所有区域信息
firewall-cmd --get-active-zones #查看活动区域信息
firewall-cmd --set-default-zone=public #设置public为默认区域
firewall-cmd --get-default-zone #查看默认区域信息
firewall-cmd --zone=public --add-interface=eth0 #将接口eth0加入区域public
#接口相关
firewall-cmd --zone=public --remove-interface=eth0 #从区域public中删除接口eth0
firewall-cmd --zone=default --change-interface=eth0 #修改接口eth0所属区域为default
firewall-cmd --get-zone-of-interface=eth0 #查看接口eth0所属区域
4、用例
firewall-cmd --query-port=8080/tcp # 查询端口是否开放
firewall-cmd --add-port=80/tcp --permanent #永久添加80端口例外(全局)
firewall-cmd --remove-port=80/tcp --permanent #永久删除80端口例外(全局)
firewall-cmd --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(全局)
firewall-cmd --zone=public --add-port=80/tcp --permanent #永久添加80端口例外(区域public)
firewall-cmd --zone=public --remove-port=80/tcp --permanent #永久删除80端口例外(区域public)
firewall-cmd --zone=public --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(区域public)
firewall-cmd --reload #重启防火墙(修改配置后要重启防火墙)

猜你喜欢

转载自blog.csdn.net/UniMagic/article/details/107598097
今日推荐