qq_37478537
令狐小弟
2018-01-22 15:45
采纳率: 80%
浏览 2.3k
已采纳

Java连接数据库,为什么不可以直接用百度到的本机IP地址而要用localhost?

图片说明
如上图中的IP地址,为什么不可替代localhost?期待您的讲解

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

23条回答 默认 最新

  • caozhy
    已采纳

    先问是不是,再问为什么。

    如果你的计算机的ip是公网ip(也就是你直接联网的计算机或者你自己能控制的路由器的ip和你在百毒王上看到的一致)
    运营上没有封掉端口,你的防火墙也允许端口,这个端口在mysql上是3306,sql server是1433
    你的数据库允许远程ip访问
    如果是路由器,需要把路由器的对应端口映射到你计算机的ip的对应端口。
    那么你完全可以通过互联网访问你的数据库

    点赞 评论
  • weixin_31351409
    小强的进阶之路 2018-01-22 15:57

    本地的ip当然链接的是本地的数据库啊

    点赞 评论
  • zzs1067632338
    园区阿祖 2018-01-22 16:03

    可以替代,cmd命令输入ipconfig,看ipv4地址,那个就等同于localhost,百度的那个ip不一样的

    具体我查了下原因,以下内容复制粘贴
    ipconfig查出来的是你本机的IP地址,也就是内网私有地址,此类地址仅在局域网使用,不能联通外网。
    百度查出来的地址是你上网的共有地址,也许并不是你主机的地址,而是电信或联通分给你的地址,用于连接互联网。

    比如你使用笔记本使用无线连接 大学宿舍的路由器进行上网,
    ipconfig是本地IP,即路由器上配置的。而百度查到的是公网IP。
    比如外网为222.212.11.10,连到你的路由器后,配置了192.168.1.2,192.168.1.3等多个IP到电脑上,这时ipconfig查到的就是192.168.1.2和192.168.1.3这些IP,而百度查到的是222.212.11.10。

    点赞 评论
  • Lwj2864221033
    咦-你恁啥嘞 2018-01-22 16:34

    很简单
    想知道自己的IP地址,可以在命令行输入ipconfig,会显示其所有配置!
    IP地址(Internet Protocol Address--网络协议地址),其在网络中是唯一的,且是随当前时段随机分配的“数字”!

    点赞 评论
  • weixin_38416359
    weixin_38416359 2018-01-22 16:34

    百度IP查询出来的IP是外网IP,而你连接到的数据库可能设置只有本地连接才可以访问.
    换句话来说 localhost =127.0.0.1 但是不等于你图上的 125.42.93.15

    点赞 评论
  • weixin_38497061
    weixin_38497061 2018-01-22 16:40

    百度到的地址是你电脑的公网地址。但是内网地址和公网地址是不一样的,你家里的手机电脑用的是同一个公网地址去到互联网进行访问的。但是你的数据库是运行在本地得,开放的端口仅在内网有效,所以要用localhost,当然也可以用127.0.0.1,或者用内网地址。公网和内网地址转换用的是NAT协议。题主可以看看

    点赞 评论
  • tianshizhiyi_121
    yybbtt 2018-01-23 00:32

    NAT协议的事情,外网地址和内网地址不一样。

    点赞 评论
  • qq_27045057
    qq_27045057 2018-01-23 00:47

    访问本地的应该是127.0.0.1,也就是localhost

    点赞 评论
  • u014794644
    瓦史托德 2018-01-23 01:30

    看你的java程序放在哪里,1 和数据库都在本地localhost 2同一网段局域网ip 3不同网段才是百度ip

    点赞 评论
  • qq_27718453
    庄粟 2018-01-23 01:32

    1楼的回答很对 2楼也对
    我也说说我的理解,虽然我网络协议这块也还没去深看,以下了我的目前的认知(猜测)。
    百度上查到的是运营商分给你的IP,这个IP你可以申请,一般小区是一个IP再来个分线器,分给每户,所以高峰时卡。
    路由也是一样的功能,你从本机发出的请求通过路由-分线器-公网IP 这里是有三个地址的。
    如果你直接通过公网IP从外发起请求,请求能到分线器,但分线器这边就不知道你的请求是要发给谁的。

    点赞 评论
  • CTO_1649900265
    惺惺作态 2018-01-23 01:34

    这个ip和你要用的ip不是同一个,图片说明,应该是这里的ip

    点赞 评论
  • qq_35833605
    未定义_undefinition 2018-01-23 01:45

    百度到的本地ip是外网ip, 现在大多数人都在内网, 通过外网ip并不能轻松访问到你的电脑 localhost 和127.0.0.1都是指本地 但两个域不通

    点赞 评论
  • weixin_41636814
    weixin_41636814 2018-01-23 01:45

    百度到的是外网的地址,你内网访问外网的IP,那外网的IP的数据库端口没有映射给你内网的你的电脑的IP的端口,当然连不上

    点赞 评论
  • KBbulaienter
    KBbulaienter 2018-01-23 01:46

    首先你要搞清楚本地连接和远程连接的区别。

    点赞 评论
  • zhongguowoaini123
    zhongguowoaini123 2018-01-23 01:59

    一般线上测试环境都会是远程服务器连接,本地连接基本上也只是自己用

    点赞 评论
  • qq_35503687
    qq_35503687 2018-01-23 02:01

    百度到的是外网地址。本地跑项目需要使用内网地址。可以是本地ip 或者localhost

    点赞 评论
  • bxhhxl
    bxhhxl 2018-01-23 02:13

    首先,你直接输入百度查本机ip的时候,搜索到的是你上层路由的IP,而且这个IP还不是固定IP。并且这个是不能当做记得机器的IP来访问。如果你的是windows 请使用win+R然后输入cmd 然后输入ipconfig 来查看本机的ip地址(如果是Linux请输入ip a命令来查看下网卡的IP)这样获取到的ip能你的程序访问到的。当然,如果是本地连接的话,推荐使用localhost或者127.0.0.1这样的方式连接,也可以用IP来连接,不过可能需要你需要注意一下防火墙了。

    点赞 评论
  • qq_24932745
    qq_24932745 2018-01-23 02:18

    netstat -ntl 看看侦听IP是怎么bind的。
    缺省为了安全,SQL Server只能通过localhost相连。
    解决办法:
    打开计算机管理->服务和应用程序->SQL Server配置管理器->SQL Server 2XXX网络配置->XXX的协议->TCP/IP中 你本机的IP地址设成启用即可。如果有的端口未填,也一并填上。

    点赞 评论
  • whb3299065
    whb3299065 2018-01-23 02:20
    你的ip和百度的ip中间有一层代理池的概念的,也就是说,百度看到的地址并不是你的真实地址,而是听过代理池代理后的地址。
    
    点赞 评论
  • Mia_Zhu
    pengyanak 2018-01-23 02:42

    因为你百度到的IP是你的动态IP呀,你的数据库在本地当然要用固定IP了呀,localhost == "127.0.0.1"

    点赞 评论
  • dww461673570
    dww461673570 2018-01-23 03:12

    百度到的是外网的地址, 现在大多数人都在内网

    点赞 评论
  • abcdefgzmy
    岳来越好 2018-01-23 03:32

    都可以,数据库配置一下就ok。使用localhost主要原因还是懒。

    点赞 评论
  • AinUser
    AinUser 2018-01-24 02:35

    一个是外网一个是内网,如果你想写IP 127.0.0.1

    点赞 评论

相关推荐