Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >远程mysql_java.sql.SQLException: null, message from server: "Host 'xxx' is not allowed to connect

远程mysql_java.sql.SQLException: null, message from server: "Host 'xxx' is not allowed to connect

作者头像
Hongten
发布于 2018-09-13 08:17:43
发布于 2018-09-13 08:17:43
86800
代码可运行
举报
文章被收录于专栏:HongtenHongten
运行总次数:0
代码可运行

最近在做一个项目,里面要用到远程mysql数据库

我想把我想要实现的功能说一下吧:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 /**
2          * 是这样的功能:我的机器是A,我现在先利用我自己写的一个jdbc方法<br>
3          * 调用远程的机器B上安装的数据库<br>
4          * 然后把我想要CRUD操作B机器上的数据库<br>
5          * 或者简单一点,可以这样认为,我现在在机器A上面有一些数据<br>
6          * 我要把这些数据插入到远程的机器B的mysql数据库里面去<br>
7          * 就是这样的操作<br>
8          */

效果图如下:

下面是我在机器A上面写的测试类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  1 /**
  2  * 
  3  */
  4 package edu.gzucm.thms.utils;
  5 
  6 import java.sql.Connection;
  7 import java.sql.DriverManager;
  8 import java.sql.PreparedStatement;
  9 import java.sql.SQLException;
 10 import java.util.Calendar;
 11 
 12 /**
 13  * @author Hongten</br>
 14  * @date 2012-10-18
 15  * 
 16  */
 17 public class SendData {
 18 
 19     public static int sendDate2Server(String ip, String port,
 20             String databaseName, String userName, String passwrod,String receiver,String content) {
 21         int flag = 0;
 22         try {
 23             // 加载MySql的驱动类
 24             Class.forName("com.mysql.jdbc.Driver");
 25         } catch (ClassNotFoundException e) {
 26             System.out.println("找不到驱动程序类 ,加载驱动失败!");
 27             e.printStackTrace();
 28         }
 29         // 连接MySql数据库,用户名和密码都是root
 30         String url = "jdbc:mysql://"+ip+":"+port+"/"+databaseName;
 31         System.out.println(url);
 32         String username = "root";
 33         String password = "root";
 34         String sql = getSQL(receiver, content);
 35         Connection conn = null;
 36         PreparedStatement pstmt = null;
 37         try {
 38             conn = DriverManager.getConnection(url, username, password);
 39             pstmt = conn.prepareStatement(sql);
 40             flag = pstmt.executeUpdate(sql);
 41         } catch (SQLException se) {
 42             System.out.println("数据库连接失败!");
 43             se.printStackTrace();
 44         }
 45         if (pstmt != null) { // 关闭声明
 46             try {
 47                 pstmt.close();
 48             } catch (SQLException e) {
 49                 e.printStackTrace();
 50             }
 51         }
 52         if (conn != null) { // 关闭连接对象
 53             try {
 54                 conn.close();
 55             } catch (SQLException e) {
 56                 e.printStackTrace();
 57             }
 58         }
 59         return flag;
 60     }
 61     
 62     public static String getSQL(String receiver,String content){
 63         /**
 64          * 下面是一些常量设置: retrytimes=0 pri=1 inpool=0 sendmode=1
 65          * sendtime和inserttime的格式是:2011-05-03 18:55:20
 66          */
 67         String now = getNow();
 68         return "insert into sms_boxsending(sender,receiver,content,sendtime,inserttime,retrytimes,pri,inpool,sendmode)values('system','"+receiver+"','"+content+"','"+now+"','"+now+"','0','1','0','1')";
 69     }
 70     
 71     /**
 72      * 获取当前时间,并格式化时间
 73      * 
 74      * @return 格式化当前的时间
 75      */
 76     public static String getNow() {
 77         Calendar calendar = Calendar.getInstance();
 78         int year = calendar.get(Calendar.YEAR);
 79         int month = calendar.get(Calendar.MONTH);
 80         int day = calendar.get(Calendar.DAY_OF_MONTH);
 81         int hour = calendar.get(Calendar.HOUR_OF_DAY);
 82         int min = calendar.get(Calendar.MINUTE);
 83         int sec = calendar.get(Calendar.SECOND);
 84 
 85         Object monthString = (month < 10) ? "0" + month : month;
 86         Object dayString = (day < 10) ? "0" + day : day;
 87         Object hourString = (hour < 10) ? "0" + hour : hour;
 88         Object minString = (min < 10) ? "0" + min : min;
 89         Object secString = (sec < 10) ? "0" + sec : sec;
 90 
 91         return "" + year + "-" + monthString + "-" + dayString + " "
 92                 + hourString + ":" + minString + ":" + secString;
 93     }
 94     
 95     public static void main(String[] args) {
 96         //这里是调用远程机器B的mysql数据库
 97         System.out.println(sendDate2Server("210.38.111.34", "3306", "messagecat", null, null,"1342360****","this is a test 短信"));
 98         //这是测试本地的
 99         System.out.println(sendDate2Server("localhost", "3308", "messagecat", null, null,"1342360****","this is a test 短信"));
100     }
101 }

结果是这样的:

那我们应该怎样解决这个问题呢?

我也是查了一下资料,才把这个问题给搞定的。。。。

其实道理很简单,也就是说,远程的机器B不允许机器A访问他的数据库。也就是说,我们要解决这个问题,就是要让机器B的数据库允许

机器A访问,就搞定啦;

操作步骤也是很简单的:

一:打开mysql控制台,输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 use mysql;
2 
3 show tables;

二:输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 select host from user;
2 
3 update user set host ='%' where user ='root';

三:进入计算机的服务界面,重新启动mysql服务就搞定啦。。

四:下面是运行效果图:

返回值都为1,说明,程序运行正常....同时也祝你好运....

还有跟多方法:http://hi.baidu.com/soutnila/item/5356f2c0002781bf0d0a7bae

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012-10-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Java】已解决com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException异常
已解决com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException异常
屿小夏
2024/06/19
6270
JAVA 面向对象技术免费技术教程
喝酒唱歌 人生真爽 --》雕版--》九牛二虎之力,印刷了100份; 别人不能用。
张哥编程
2024/12/13
1200
JAVA 面向对象技术免费技术教程
MySQL死锁日志分析与解决的Java代码实现
在高并发的数据库应用中,由于多个事务同时操作相同的资源,可能会导致死锁的出现。MySQL作为一种常用的关系型数据库,提供了死锁检测和日志记录的功能。本文将介绍如何通过分析MySQL的死锁日志,并使用Java代码来解决死锁的问题。阅读本文后,读者将能够了解如何定位和解决MySQL数据库中的死锁问题,并加深对MySQL和Java的理解。
疯狂的KK
2023/09/22
3070
MySQL死锁日志分析与解决的Java代码实现
关于预编译SQL的面试题
面试官:“在数据库开发中,我们经常提到预编译SQL,你能详细解释一下这个概念吗?预编译SQL相比普通SQL有哪些优势?
小白的大数据之旅
2025/01/22
1270
关于预编译SQL的面试题
JavaWeb后端入门1-JDBC(Eclipse环境)
mysql驱动包为mysql-connector-java-5.1.7-bin.jar
用户6948990
2025/04/03
990
JavaWeb后端入门1-JDBC(Eclipse环境)
全面了解Java连接MySQL的基础知识,快速实现数据交互
当今互联网时代,大量的应用程序都需要使用MySQL数据库来存储和处理数据。Java作为一种广泛使用的编程语言之一,在开发Web应用程序时经常需要连接MySQL数据库进行数据操作。
默 语
2024/11/20
2830
全面了解Java连接MySQL的基础知识,快速实现数据交互
:Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x80\xE3
在开发过程中,我们有时会遇到数据库存储数据时出现字符编码问题的情况。其中一个常见的错误是​​Caused by: java.sql.SQLException: Incorrect string value​​,并且提到了具体的列名和行号。本文将详细介绍这个错误的原因和解决方案。
大盘鸡拌面
2023/11/03
1.6K1
Java——数据库编程JDBC之快速入门吐血总结及各关键对象详解(提供了JDBCUtils工具类)
JDBC,Java Database Connectivity,Java数据库连接,Java语言操作数据库。JDBC的本质是SUN公司定义的一套操作所有关系型数据库的规则,即接口,各数据库厂商实现这套接口,提供数据库驱动jar包,用户可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
Winter_world
2020/09/25
5290
Java——数据库编程JDBC之快速入门吐血总结及各关键对象详解(提供了JDBCUtils工具类)
进行JDBC操作时,连接参数的配置(附DBUtil工具类)
JDBC连接时,两种常见的地址书写 1、jdbc连接oracle数据库 driver=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@127
时间静止不是简史
2020/07/24
1.7K0
进行JDBC操作时,连接参数的配置(附DBUtil工具类)
BS1077-基于java+JSP+mysql开发实现高校学生学籍管理系统
本高校学生学籍管理系统设计与实现,系统主要采用java,springMVC,mybatis,mysql数据库,JSP页面开发技术,针对高校内部的学生,教师,班级,课程,学生学籍,学生成绩等数据采用关系数据库mysql进行存储分析,系统主要通过前后端开发技术整合,搭建综合性的大学生学籍管理系统。
计算机程序优异哥
2023/09/18
3900
BS1077-基于java+JSP+mysql开发实现高校学生学籍管理系统
如何把.csv文件导入到mysql中以及如何使用mysql 脚本中的load data快速导入
 1, 其中csv文件就相当于excel中的另一种保存形式,其中在插入的时候是和数据库中的表相对应的,这里面的colunm 就相当于数据库中的一列,对应csv表中的一列。
用户5166556
2019/04/16
6.5K0
JDBC(一)之细说JDBC
今天这一篇写的是关于JDBC的内容。之前一直在学习mysql数据库,那数据库怎么和我们的程序相互交互呢,它们之间的桥梁就是JDBC。接下来让我们直接进入正题! 一、JDBC概述 1.1、JDBC简介   JDBC全称为:Java DataBase Connectivity(java数据库连接)   JDBC是SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范。   JDBC是一组专门负责连接并操作数据库的标准,在整个JDBC 中实际上大量的提供的是接口。由数据库厂商提供,不同数据库其
用户1195962
2018/01/18
4K0
JDBC(一)之细说JDBC
JDBC从零开始的保姆级教程!!!
这里原本最多只能有8个连接,我们使用了9次连接,因为其中当i=3时,我们归还了一个连接,不然会报错
大忽悠爱学习
2021/11/15
5660
简单的考勤系统
连接数据库类 package com.lianrui.it; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /**  * 封装数据库连接操作  *   * @author chendongj  *   */ public class DBUtil {
用户1220053
2018/02/09
2.8K0
JDBC简介
简单地说,就是用于执行SQL语句的一类Java API,通过JDBC使得我们可以直接使用Java编程来对关系数据库进行操作。通过封装,可以使开发人员使用纯Java API完成SQL的执行。
Java架构师历程
2018/09/26
6030
JDBC简介
【Spring实战】—— 14 传统的JDBC实现的DAO插入和读取
从这篇开始学习Spring的JDBC,为了了解Spring对于JDBC的作用,先通过JDBC传统的流程,实现一个数据库的插入和读取。 从这篇你可以了解到:   1 传统的JDBC插入和读取的过程
用户1154259
2018/01/17
7740
【Spring实战】—— 14 传统的JDBC实现的DAO插入和读取
java学习与应用(3.6.2)--JDBC
JDBC(Java数据库连接的接口)用于统一java代码操作各种数据库。(需要实现类,是数据库厂商提供jar包完成)。 步骤为,导入jar包(可以使用idea的右键添加到库),注册驱动,获取连接对象,定义sql,获取对象,执行语句,处理结果,释放资源。 Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root"); String sql = "update account set balance = 2000 where id = 1";Statement stmt = conn.createStatement(); int count = stmt.executeUpdate(sql);System.out.println(count);stmt.close();conn.close(); DriverManager :驱动管理对象,Connection :数据库连接对象,Statement :执行sql的对象,ResultSet :结果集对象,Preparedstatement :执行sql的对象 com.mysql.jdbc.Driver类中的静态代码块,执行了注册驱动的操作(使用哪个数据库驱动jar(mysql5以后可以省略,在META-INF.service.java.sql.Driver中自动注册))。 DriverManager对象中静态方法getConnection使用格式如:jdbc:mysql://ip:端口/数据库名。(本地地址3306可以省略ip和端口)。 Connection对象中获取对象方法:createStatement( ),preparedStatement(sql),事务相关:开启: setAutoCommit(boolean autoCommit) ,提交: commit(),回滚: rollback() Statement对象,execute方法(执行任意sql),executeUpdate(执行DML语句(insert,update,delete),DDL语句(create,alter,drop)),返回影响行数(DML有)判断是否成功。executeQuery语句,执行DQL语句(select)。 实例代码:外部的变量,trycatchfinally格式,释放等。 ResultSet结果集对象,作为executeQuery的返回值,封装查询结果,其中的next方法向下移动游标,getXxx获取数据(某一列,Xxx为数据类型,可传入列编号[编号]和列名称)。一般使用while循环判断并执行。 定义抽取JDBC工具类(见代码下),用于简化代码,添加配置文件写入信息,通过静态代码块(只需要读取一次)获取properties配置信息,通过类加载器动态获取绝对路径。
嘘、小点声
2020/02/18
4560
Java+Ajax实现用户名重复检验
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/article/details/71087162
大黄大黄大黄
2018/09/14
1.2K0
基于模版的内容网站开发(更新版)
前几天发布的《基于模版的内容网站开发》在RepeatFile.java存在一些问题,进行了修改。另外加了一个Paper类,用于与数据库数据进行交互。此外刚还加了个summary字符,用于存储文章的概要,现修改如下:
顾翔
2024/09/18
1780
基于模版的内容网站开发(更新版)
Java中的JDBC详解
Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
共饮一杯无
2022/11/28
4840
推荐阅读
相关推荐
【Java】已解决com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException异常
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验