mysql已经配置且正确_mysql8 参考手册-Connector/J应用程序进行故障排除-1

2023-11-17

16.1: 当我尝试使用MySQL Connector / J连接到数据库时,出现以下异常:

SQLException: Server configuration denies access to data source

SQLState: 08001

VendorError: 0

到底是怎么回事?我可以很好地与MySQL命令行客户端连接。

Connector / J通常使用TCP / IP套接字连接到MySQL(有关例外情况,请参见第6.8节“使用Unix域套接字连接”和 第6.9节“使用命名管道连接”)。MySQL服务器上的安全管理器使用其授权表来确定是否允许TCP / IP连接。因此,您必须通过向MySQL服务器发布一条GRANT语句,为连接添加必要的安全凭证。有关更多信息,请参见GRANT语句。

警告

在MySQL上不正确地更改特权和权限可能会导致您的服务器安装具有非最佳的安全属性。

注意

除非您添加 标志,并且使用主机以外的其他功能, 否则无法 使用mysql命令行客户端测试连接性 。如果使用特殊的主机名,则 mysql命令行客户端将尝试使用Unix域套接字 。如果要测试与的TCP / IP连接,请改用 作为主机名。 --hostlocalhostlocalhostlocalhost127.0.0.1

16.2: 我的应用程序抛出一个SQLException'没有合适的驱动程序'。为什么会这样呢?

有三种可能的原因导致此错误:

Connector / J驱动程序不在您的范围内 CLASSPATH,请参阅 第4章,Connector / J安装。

连接URL的格式不正确,或者您引用了错误的JDBC驱动程序。

使用DriverManager时, jdbc.drivers尚未使用Connector / J驱动程序的位置填充系统属性。

16.3: 我试图在小程序或应用程序中使用MySQL Connector / J,但出现类似于以下的异常:

SQLException: Cannot connect to MySQL server on host:3306.

Is there a MySQL server running on the machine/port you

are trying to connect to?

(java.security.AccessControlException)

SQLState: 08S01

VendorError: 0

您正在运行Applet,安装了 skip_networking启用系统变量的MySQL服务器,或者您的MySQL服务器前面都有防火墙。

小程序只能通过网络连接到运行为该小程序提供.class文件的Web服务器的计算机。这意味着MySQL必须在同一台计算机上运行(或者您必须具有某种类型的端口重定向)才能起作用。这也意味着您将无法从本地文件系统测试applet,但必须始终将它们部署到Web服务器。

Connector / J通常使用TCP / IP套接字连接到MySQL(有关例外情况,请参见第6.8节“使用Unix域套接字连接”和 第6.9节“使用命名管道连接”)。与MySQL的TCP / IP通信可能会受到 skip_networking系统变量或服务器防火墙的影响。如果已skip_networking 启用MySQL 启动,则需要在文件中注释掉它, /etc/mysql/my.cnf或 /etc/my.cnf使TCP / IP连接正常工作。(请注意,您的服务器配置文件也可能存在于dataMySQL服务器的目录或其他位置,具体取决于MySQL的编译方式;由Oracle创建的二进制文件总是寻找 /etc/my.cnf和 datadir/my.cnf; 有关详细信息,请参见使用选项文件。)如果您的MySQL服务器已经过防火墙保护,则需要配置防火墙以允许从运行Java代码的主机到MySQL正在侦听的端口上的MySQL服务器进行TCP / IP连接。到(默认为3306)。

16.4: 我有一个servlet /应用程序,可以正常工作一天,然后在一夜之间停止工作

MySQL闲置8个小时后关闭连接。您要么需要使用处理过时的连接的连接池,要么使用autoReconnect 参数(请参见 第6.3节“配置属性”)。

另外,捕获SQLExceptions您的应用程序并处理它们,而不是一直传播它们直到您的应用程序退出。这只是良好的编程习惯。MySQL Connector / J会将 SQLState(java.sql.SQLException.getSQLState()在API文档中参见 )设置为08S01在查询处理期间遇到网络连接问题时。此时尝试重新连接到MySQL。

以下(简单的)示例显示了可以处理这些异常的代码如下所示:

例16.1连接器/ J:具有重试逻辑的事务示例

public void doBusinessOp() throws SQLException{

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

//

// How many times do you want to retry the transaction

// (or at least _getting_ a connection)?

//

int retryCount = 5;

boolean transactionCompleted = false;

do {

try {

conn = getConnection(); // assume getting this from a

// javax.sql.DataSource, or the

// java.sql.DriverManager

conn.setAutoCommit(false);

//

// Okay, at this point, the 'retry-ability' of the

// transaction really depends on your application logic,

// whether or not you're using autocommit (in this case

// not), and whether you're using transactional storage

// engines

//

// For this example, we'll assume that it's _not_ safe

// to retry the entire transaction, so we set retry

// count to 0 at this point

//

// If you were using exclusively transaction-safe tables,

// or your application could recover from a connection going

// bad in the middle of an operation, then you would not

// touch 'retryCount' here, and just let the loop repeat

// until retryCount == 0.

//

retryCount = 0;

stmt = conn.createStatement();

String query = "SELECT foo FROM bar ORDER BY baz";

rs = stmt.executeQuery(query);

while (rs.next()) {

}

rs.close();

rs = null;

stmt.close();

stmt = null;

conn.commit();

conn.close();

conn = null;

transactionCompleted = true;

} catch (SQLException sqlEx) {

//

// The two SQL states that are 'retry-able' are 08S01

// for a communications error, and 40001 for deadlock.

//

// Only retry if the error was due to a stale connection,

// communications problem or deadlock

//

String sqlState = sqlEx.getSQLState();

if ("08S01".equals(sqlState) || "40001".equals(sqlState)) {

retryCount -= 1;

} else {

retryCount = 0;

}

} finally {

if (rs != null) {

try {

rs.close();

} catch (SQLException sqlEx) {

// You'd probably want to log this...

}

}

if (stmt != null) {

try {

stmt.close();

} catch (SQLException sqlEx) {

// You'd probably want to log this as well...

}

}

if (conn != null) {

try {

//

// If we got here, and conn is not null, the

// transaction should be rolled back, as not

// all work has been done

try {

conn.rollback();

} finally {

conn.close();

}

} catch (SQLException sqlEx) {

//

// If we got an exception here, something

// pretty serious is going on, so we better

// pass it up the stack, rather than just

// logging it...

throw sqlEx;

}

}

}

} while (!transactionCompleted && (retryCount > 0));

}

注意

autoReconnect不建议 使用该选项,因为没有安全的方法可以重新连接到MySQL服务器,而不会冒连接状态或数据库状态信息损坏的风险。而是使用连接池,这将使您的应用程序可以使用池中的可用连接连接到MySQL服务器。该 autoReconnect功能已弃用,在将来的版本中可能会删除。

16.5: 我无法使用Connector / J连接到MySQL服务器,并且我确定连接参数正确。

确保 skip_networking尚未在服务器上启用系统变量。Connector / J必须能够通过TCP / IP与服务器通信;不支持命名套接字。另外,请确保您没有通过防火墙或其他网络安全系统过滤连接。有关更多信息,请参见 无法连接到[本地] MySQL服务器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql已经配置且正确_mysql8 参考手册-Connector/J应用程序进行故障排除-1 的相关文章

  • MATLAB算法实战应用案例精讲-【时序模型】循环神经网络-GRU(附MATLAB和Python代码)

    目录 前言 几个高频面试题 1 GRU与LSTM的区别与联系 2 LSTM和RNN的区别 GRU的引入 算法原理
  • 浅析TVSPK稳压二极管,谁能更胜一筹?

    1 符号封装 稳压二极管和TVS管的电路符号和稳压二极管基本相同 封装也差不多 有时候在外观甚至很难分别出来到底哪个是哪个 2 电路接法 稳压二极管和TVS管在电路都是反向接入 也就是利用它的反向特性 利用PN结雪崩效应 在反向击穿前均有一
  • Python3爬虫学习——requests库笔记

    Python3爬虫学习 requests库笔记 前言 本笔记用于记录整理requests库的一些基本知识 内容会根据博主自己的认知作增添或压缩 其实自己看了下之前写的urllib库笔记 觉得那么写万字长文并不妥当 没有起到快速查阅的笔记作用
  • Nginx下载大文件失败

    原因分析 nginx代理nginx时 前端用户请求下载文件 nginx代理会先从后端nginx拿到文件并缓存到本地 然后响应给客户端 其中与proxy buffer相关的配置项如下 proxy buffer size 512k proxy
  • Socket_Tcp加密文件传输系统

    代码下载链接 Socket Tcp 原文链接 https blog csdn net weixin 45746588 article details 107683901 这是一个课程的作业 我是初学者 所以写完这个代码还是花了我好几周的时间
  • JDK8新增锁StampedLock详解

    1 StampedLock是做什么的 它是ReentrantReadWriteLock 的增强版 是为了解决ReentrantReadWriteLock的一些不足 2 ReentrantReadWriteLock有什么不足之处呢 我们都知道
  • extjs打开页面光标自动定位

    网上查了好久 也知道使用focus 当时不知道在哪里使用 调试到最后发现要在view show 之后 具体代码如下 function resp var view createFormWindow 新增 smpsupplyContractMa
  • 推荐几本Linux相关的好书

    应用层开发的 可以看看 Linux Application Development Advanced Linux Programming 第二本废人同学曾经翻译过 译稿可从这里获取 另外Linux和Unix渊源极深 因此 应用层开发也可以看
  • Visual Studio 2022 安装

    1 官网下载 打开浏览器 输入微软官网https visualstudio microsoft com zh hans downloads 下载社区版安装 2 安装社区版 3 安装时组件选择通用Windows10开发平台C 选项
  • python实现抢劵_手把手教你用python抢京东大额神券

    一 背景介绍 我们经常能看到京东上有满200减100之类的大额神券 但是当自己激动的等在电脑旁 手拿鼠标 眼盯屏幕 等着倒计时慢慢临近 期待抢到自己喜爱的优惠券 然而最终得到的往往是 券已抢完 为了弥补手速的缺憾 今天我教大家如何用pyth
  • CentOS 8: yum 设置为阿里源

    1 将源文件备份 cd etc yum repos d mkdir backup mv repo backup 2 下载阿里源文件 curl o etc yum repos d CentOS Base repo http mirrors a
  • [Qt学习笔记]Qt动态切换控件样式属性方法

    目录 1 介绍 2 实现过程 3 效果展示 1 介绍 在编程过程中我们一般使用setStyleSheet 函数来设置控件的样式属性 包括颜色 边框 透明度等属性 如果不同的控件和样式直接在代码中设置 会造成无法统一管理的缺点 反复书写样式属
  • C语言怎么用char输出多个字母,c语言输入一个字符串怎么间隔输出

    Q1 c语言中 如何利用指针对字符串每隔几个输出一个 隔三个 输出一个 也就是每四个输出一个 char s abcdefgh char p s int i 0 for p s p p i if i 4 0 putchar p Q2 c语言
  • 等额本息贷款每月还款金额推导过程

    假设贷款总额是A 而每月利息是b 总共360期 目标是计算每个月应该给银多少钱 推导过程如下 设每个月还银行的本金为 m n 1 n
  • Pattern.compile的flag参数

    Pattern compile函数 Pattern Pattern compile String regex int flag regex为正则表达式 flag的取值范围如下 Pattern CANON EQ 当且仅当两个字符的 正规分解
  • (总结许多容易犯的错误)Ubuntu14.04+cuda8.0+gtx1080+cudnn5.1配置教程

    需要注意 不能按照网上大多数cuda8 0 gtx1080的方法来做 因为他们这些方法都忽略了一个重要的问题 NVIDIA官方的版本更新会影响兼容性导致Ubuntu系统无法进入登录界面 例如 cuda 8 0 27 linux版本对应NVI
  • 数组解构赋值与扩展运算符...

    解构 let a b c 1 3 5 扩展运算符
  • 「从0到1搭建自己的UI组件库」-- button组件

    写在前面 我是 沸羊羊 昵称来自于姓名的缩写 fyy 之前呕心沥血经营的博客因手残意外注销 现经营此账号 本人是个小菜 正向着全栈工程师的方向努力着 文章可能并不高产 也很基础 但每写一篇都在用心总结 请大佬勿喷 如果您对编程有兴趣 请关注
  • vue3封装简易的vue-echarts

    项目场景 数据可视化开发 采用的技术栈是vue3 echarts router 问题描述 在vue2中 才开始开发数据可视化大屏 都是用echarts 之后改用为vue echarts组件 但是到了vue3之后 组件会有一些小问题 所以准备

随机推荐

  • 如何强制解锁或删除被占用的文件或文件夹 - ForceDelete绿色强制文件删除工具

    你可能时常遇到无法删除Windows上的文件和文件夹的情况 并且会收到 无法删除文件 访问被拒绝 或 该文件已被其他程序打开 诸如此类的错误消息 这意味着这些文件和文件夹在Windows中被锁定 无法以常规方式删除 你可以试试ForceDe
  • 计算机如何根据人脸估计年龄,人脸图像算法研究(1)

    今天给大家带来一篇 人脸识别中的年龄估计技术 年龄特征作为人类的一种重要生物特征 计算机要如何基于人脸图像估计年龄呢 概述 简单地说 基于人脸图像的年龄估计是指机器根据面部图像推测出人的大概年龄或所属的年龄范围 年龄段 基于人脸图像的年龄估
  • 4.4.5 密码验证(2)

    4 当且仅当含数字和字母的密码验证 如果密码当且仅当包含数字和字母 那么该密码的强度是中等强度 当然 它的安全性一般 以下正则表达式能够验证当且仅当包含数字和字母的密码 da zA Z d a zA Z da zA Z 74 正则表达式 7
  • C++ 的四种类型转换

    背景 C语言中强制类型转换可以随意转换我们想要的类型 格式如下 类型 变量名 那么为什么C 还要引入新的4种类型转换呢 1 新的类型转换控制符可以很好的控制类型转换的过程 允许控制各种类型不同的转换 2 C 的类型转换控制服能告诉程序员或读
  • 【毕业设计】Python_学生校园消费行为

    资源下载 https download csdn net download wouderw 87357462 1 分析学校校园消费行为的目的 分析学生的消费行为和食堂的运营状况 为食堂运营提供建议 构建学生消费细分模型 为学校判定学生的经济
  • VT是什么?怎么打开教程

    装过虚拟机的朋友都知道 要想虚拟出cpu 就必须电脑打开VT VT指的是CPU的虚拟化技术 有了它就可以单CPU模拟多CPU并行 这样才可以虚拟出电脑出来 而如果你的bios没有打开VT的话 是不能创建虚拟机的 下面就教大家怎么打开VT 1
  • 华为员工自曝,工作四年,每天都哭想裸辞!

    架构师大咖 架构师大咖 打造有价值的架构师交流平台 分享架构师干货 教程 课程 资讯 架构师大咖 每日推送 公众号 该公众号已被封禁 进入华为是一项令人向往的机会 但它并不适合每个人 许多人都希望能够进入这家公司 但实际上 它要求员工具备卓
  • 加权回归估计_比率估计与回归估计

    本章讨论简单随机抽样和分层随机抽样下比率估计和回归估 计的构造及性质 要求 掌握总体比率 比率估计量及回归估计量的概念 了解比率估计量 回归估计量的偏倚 方差及方差的估计量 掌握应用比率估计量及回归估计量的条件 抽样调查从本质上看是利用不完
  • 蓝桥杯:拉马车

    目录 题目描述 输入描述 输入为 2 行 2 个串 分别表示 A B 双方初始手里的牌序列 我们约定 输入的串的长度不超过 30 输入输出样例 输入 输出 题目分析 列表 递归 AC代码 Java 题目描述 小的时候 你玩过纸牌游戏吗 有一
  • Linux最基础

    软件包安装的时候 会经常用到 tar zxvf Japan tar gz 如果要做LAMP环境的编译 建立一个LAMP源代码包构建的PHP生产环境 下载的包都是 tar gz 这样的源代码包 创建目录 mkdir 创建文件 touch 命令
  • Apache Commons Compress介绍-Zip压缩解压

    Apache Commons Compress介绍 Zip压缩解压 简述 为什么使用Apache Commons Compress 在使用java自带的ZipFile处理zip文件时报如下错误java lang IllegalArgumen
  • 安装virtualbox时安装程序出现严重错误

    问题 windows 8 1 下virtualbox安装到一半跳出错误窗口被迫终止 窗口如下 virtualbox install fail https img blog csdn net 20160622163138051 解决方法 在服
  • 从头走前端-百度前端技术学院(1)

    记录自己在网上自学加复习的前端笔记 当然还有一些其他涉及的相关知识 问题 在web建站技术中 HTML HTML5 XHTML CSS JavaScript PHP SQL web services是什么 答 首先知道网站的访问过程 1 输
  • navicat 绿化版

    navicat自带注册码 已经绿化 解压到任意目录就可运行 Navicat Premium 是一个可多重连接的数据库管理工具 它可让你以单一程序同时连接到 MySQL Oracle PostgreSQL SQLite 及 SQL Serve
  • 高性能IO模型浅析

    高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型 常见的IO模型有四种 1 同步阻塞IO Blocking IO 即传统的IO模型 2 同步非阻塞IO Non blocking IO 默认创建的socket都是阻塞的 非阻塞IO
  • Python retrying模块

    参见 http segmentfault com a 1190000004085023 github源码 https github com rholder retrying
  • QT信号槽连接方式

    1 QT信号槽主要分两个连接方式 手动和自动 1 1 使用 connect 函数手动连接信号和槽 QObject connect sender SIGNAL signal receiver SLOT slot 自动 1 2 使用 lambd
  • 模板类与函数

    模板类与函数 普通函数 参数和返回值是模板类的实例化版本 函数模板 参数和返回值是某种的模板类 函数模板 参数和返回值是任意类型 支持普通类和模板类和其它类型 模板类可以用于函数的参数和返回值 有三种形式 普通函数 参数和返回值是模板类的实
  • 运用Cookie技术,统计访问次数以及上次访问时间。

    package servlet import java io IOException import java io PrintWriter import java text SimpleDateFormat import java util
  • mysql已经配置且正确_mysql8 参考手册-Connector/J应用程序进行故障排除-1

    16 1 当我尝试使用MySQL Connector J连接到数据库时 出现以下异常 SQLException Server configuration denies access to data source SQLState 08001