局域网内如何让设备远程访问指定设备的数据库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,保存就会发现在规则里看到新建的规则
好,那么现在我们来试一下可不可以,把上一步打开的防火墙先打开先。启动程序,发现可以了,成功了。。。。。。。。。
到此,完成了要求。
谢谢大家查看和学习,有什么问题可以提问,说的不好的,大家也提一下。。。。。。
相关文章推荐
- autocommit(自动提交) mysql
- MySQL 5.6 参考手册翻译(部分)
- MySQL优化-老韩视频笔记(三)
- MySQL优化-老韩视频笔记(二)
- MySQL优化-老韩视频笔记(一)
- Mysql limit 优化,百万至千万级快速分页 复合索引
- Windows下配置Mysql
- MySQL的root用户密码忘了怎么办
- MySql的锁问题和事物
- mysql 导入txt中记录
- 关于Mysql+EF6本地运行和发布没有问题,发布到服务器上出现问题的解决方案
- MySQL日期数据类型、时间类型使用总结
- 【mysql】count(*),count(1)与count(column)区别
- Mysql 中ERROR 1406 (22001): Data too long for column " xxxx"
- Mysql 中ERROR 1406 (22001): Data too long for column " xxxx"
- MySQL 设置允许远程登录
- mysql 数据库性能追踪与分析
- 找回mysql root用户的密码
- Mysql中文乱码问题完美解决方案
- Mysql 使用with rollup对聚合结果进行聚合