远程mysql_java.sql.SQLException: null, message from server: "Host 'xxx' is not allowed to connect
时间:2022-06-10
本文章向大家介绍远程mysql_java.sql.SQLException: null, message from server: "Host 'xxx' is not allowed to connect,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近在做一个项目,里面要用到远程mysql数据库。
我想把我想要实现的功能说一下吧:
1 /**
2 * 是这样的功能:我的机器是A,我现在先利用我自己写的一个jdbc方法<br>
3 * 调用远程的机器B上安装的数据库<br>
4 * 然后把我想要CRUD操作B机器上的数据库<br>
5 * 或者简单一点,可以这样认为,我现在在机器A上面有一些数据<br>
6 * 我要把这些数据插入到远程的机器B的mysql数据库里面去<br>
7 * 就是这样的操作<br>
8 */
效果图如下:
下面是我在机器A上面写的测试类:
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控制台,输入:
1 use mysql;
2
3 show tables;
二:输入:
1 select host from user;
2
3 update user set host ='%' where user ='root';
三:进入计算机的服务界面,重新启动mysql服务就搞定啦。。
四:下面是运行效果图:
返回值都为1,说明,程序运行正常....同时也祝你好运....
还有跟多方法:http://hi.baidu.com/soutnila/item/5356f2c0002781bf0d0a7bae
- iBatis.Net(4):DataMapper API
- PHP开发过程的那些坑(四) ——PDO bindParam函数
- iBatis.Net(3):创建SqlMapper实例
- PHP开发过程的那些坑(五) ——PHP的empty()
- iBatis.Net(2):基本概念与配置
- ASP.NET Web API中的依赖注入什么是依赖注入ASP.NET Web API依赖解析器使用Unity解析依赖配置依赖解析
- 解决Entity Framework查询匿名对象后的跨域访问的一种方式
- WebSocket在ASP.NET MVC4中的简单实现
- 在ASP.NET MVC中使用Unity进行依赖注入的三种方式第一种方法第二种方法第三种方法
- Unity Container中的几种注册方式与示例1.实例注册2.简单类型注册
- 使用Unity创建依赖注入依赖注入生命周期:注册、解析、销毁 注册解析销毁
- 使用WCF进行跨平台开发之三(JAVA调用WCF服务)1.开发必备2.生成WCF客户端3.开发程序4.结束语
- 使用WCF进行跨平台开发之二(IIS托管WCF服务并使用php平台调用)1.系统必备2.在IIS中托管WCF服务3.使用PHP调用托管在IIS中的WCF服务
- 使用WCF进行跨平台开发之一(WCF的实现、控制台托管与.net平台的调用)1.创建项目结构2.契约的设计3.实现服务4.控制台托管服务5.在.net平台中调用WCF
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- SpringBoot整合Freemarker使用
- Vm常见虚拟网络模式
- 设计模式 | 桥接模式
- Supervisor快速入门 | 使用Supervisor守护Nginx进程
- 技术选型的艺术---湖北技术价值分享会
- SpringBoot 配置文件编写及使用方式 (拒绝硬编码)
- Docker六脉神剑 (六) 1. Docker集群之Kubernetes(K8S) 了解k8s - 理论篇
- SpringBoot thymeleaf自定义错误页面
- SpringBoot 配置Redis操作
- SpringBoot 自定义banner (小彩蛋)
- SpringBoot使用Mybatis 快速入门
- 【CTR】ESMM:多任务联合学习
- 状态管理之Vuex (三) store利用module拆分
- MySQL 案例:无主键表产生的延迟
- 面试官真的会问:new的实现以及无new实例化