您的位置:首页 > 数据库 > MySQL

局域网内如何让设备远程访问指定设备的数据库MySQL

2016-01-10 15:05 1051 查看

局域网内如何让设备远程访问指定设备的数据库MySQL

之前做过一个公司内部小系统——XXX管理系统。大家都知道,自己学习java的时候,一般都是本地访问本地数据库,使用的ip地址也localhost(127.0.0.1),对于远程访问别人的电脑里面的额数据库,可能有很多人不是很明白,在此本人总结了一下本人是如何来配置这些环境的。PS:java语音开发的系统

在此约定:本人使用的是java语言,数据库使用的是MySQL,java访问数据库使用的是JDBC方式去连接访问。


本地实现java连接数据库代码如下:

//定义变量
private final static String url="JDBC:mysql://localhost:3306/mobilebms";//连接地址
private final static String user ="root";//数据库用户账号
private final static String password ="";//密码
//注册驱动
Class.forName("com.mysql.jdbc.Driver");//推荐使用
//或者
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//建立连接(connect)
Connection conn = DriverManager.getConnection(url, user, password);
/*
*
* 代码忽略大部分,根据此次目的,只写出主要代码段,jdbc连接MySQL网上很多资料
*/


可以观察到上面连接数据主要的参数有

url:JDBC:mysql://(IP地址):(端口)/(数据库名)

user:数据库访问账号账号

password:数据库访问密码

localhost其实是本地ip,是127.0.0.1

那么问题来了,我们使用内网IP可以吗?

所以我查找了我的内网ip ,在CMD命令窗口输入ipconfig/all



可以看到我的内网ip是:192.168.1.103

现在我知道我的内网ip了,那么我用我的内网ip替代了localhost

修改后代码

//定义变量
private final static String url="JDBC:mysql://192.168.1.103:3306/mobilebms";//连接地址
private final static String user ="root";//数据库用户账号
private final static String password ="";//密码
//注册驱动
Class.forName("com.mysql.jdbc.Driver");//推荐使用
//或者
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//建立连接(connect)
Connection conn = DriverManager.getConnection(url, user, password);
/*
*
* 代码忽略大部分,根据此次目的,只写出主要代码段,jdbc连接MySQL网上很多资料
*/


然后启动程序,发现竟然无法连接数据库,获取数据库信息。总是报“1130-Host … is not allowed to connect to this MySQL server”错误。

然后我查了一下资料,原来在数据库没有设定允许该设备连接,那么在哪里查看什么ip可以访问该数据库呢?我们需要进入数据库了。

CMD上面的命令

mysql -uroot -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 310

Server version: 5.5.32 MySQL Community Server (GPL)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> show databases;

+——————–+

| Database |

+——————–+

| information_schema |

| mobilebms |

| mysql |

| performance_schema |

| zentao |

| zentaopro |

+——————–+

6 rows in set (0.00 sec)

mysql> use mysql;

Database changed

mysql> select host,user,password from user;



看到可以访问该数据库里面的ip,确实没有局域网内ip访问权限,那么我们如何添加进去呢?我们尝试一下使用数据库插入语句

insert into user (host,user,password) value (‘192.168.1.103’,’root’,”);

查询一下是否插入进入了



发现插入进去,那么我们看看能不能访问了,运行程序。。。。。

发现可以访问了,这样子我使用我的内网ip,访问我本地服务器是可以实现了,那么问题又来了,别人的内网ip如何访问我的数据库呢??????

我查看了一下质量,当ip定义为*(星号),表示所有ip的意思,那么我插入看看一下

insert into user (host,user,password) value (‘%’,’root’,”);

或者

GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;

最后更新:

flush privileges

查看一下是否已经有了



发现已经添加成功,现在激动的时候到了,将软件拷贝给其他人(内网使用的电脑),他们打开电脑,运行软件后,发现访问不了

提示是端口不允许访问,我想应该是防火墙问题,那么现在我们把防火墙关掉(比较危险,这种方式)

控制面板——》系统安全——》windows防火墙——》更改通知设置,选择关闭防火墙



然后再连接,发现竟然可以连上,此时可以说是任务完成了,但是这样真的好吗?把防火墙关闭,那么就是一个安全新问题了,只是为了一个端口,3306,我就得关闭整个电脑的防火墙,这样不划算,还有其他方式。

于是我上网查了一些资料,原来还可以这样做

控制面板——》系统安全——》windows防火墙——》高级设置,弹出一个新的界面,我们选择《入站规则》,点击右边的《新建规则》



弹出一个新的界面,选择端口(主要是端口禁止访问造成的)



下一步,选择特定端口,输入数据库访问端口3306



然后一直下一步,输入名称MySQL,保存就会发现在规则里看到新建的规则



好,那么现在我们来试一下可不可以,把上一步打开的防火墙先打开先。启动程序,发现可以了,成功了。。。。。。。。。

到此,完成了要求。

谢谢大家查看和学习,有什么问题可以提问,说的不好的,大家也提一下。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: