打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
访问mysql数据库时,localhost和127.0.0.1不同吗?
userphoto

2015.09.19

关注
  • 0 关注
  • 4 收藏,4k 浏览
0

用php访问本地的mysql数据库,代码如下:

$mysqli = new mysqli("localhost", $name, $passwd, "test");if ($mysqli->connect_errno) {  die("Failed to Connect to mysql: " . $mysqli->connect_errno);}$result = $mysqli->query("SELECT * FROM pet;");if(!$result){  echo "QUERY ERROR: " . $mysqli->error;}... ...$mysqli->close();

当主机名写 localhost 时, 可以正常把库表中的记录显式出来。而当主机名写成 127.0.0.1 时,虽然连接数据库没有报错,但报 QUERY ERROR。这么说 localhost127.0.0.1 不同吗? 怎么回事呢?

1 个回答

3
采纳
Roamer_Gu 1.2k 2013年10月21日 回答 · 2013年10月28日 更新

loaclhost和127.0.0.1是不能等价的

loaclhost是一个name,这个name一般情况下代表了127.0.0.1这个IP地址,也就是说,当你对计算机说,我要去loaclhost的时候,计算机会通过DNS或者NBNS或者hosts这个文件将它翻译成127.0.0.1.

如果使用loaclhost去链接数据库,则Mysql会使用unixsocket去链接。如果指定为127.0.0.1,则会使用TCP/IP来链接。

所以,尽量使用127.0.0.1.

嗯,看到答案已经被采纳了,不过还是要多说一点

其实答案写的不是很严谨,不过既然被采纳了,就多说一点。通常意义上localhost127.0.0.1是等价的,只是mysql在处理这个名词的问题上有一些不同,是根据不同的地址来采取的不同的通信手段。

原因呢,我猜大概是为了本地应用能获得更好的性能。而且localhost这个地址在mysql中也不会做匹配。即user@'%'不能匹配到user@'localhost'

1

另外,localhost 和 127.0.0.1 还真不等价,比如我这边 localhost 的首选地址是 ::1。对 MySQL 来说,使用 IP 访问和使用域名访问权限也可能不同。

#1 依云 · 2013年10月28日 · 回复 举报

展开评论

撰写答案

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
WEB前端第五十六课——MySQL、前后台交互
PHP中如何连接数据库
PHP中的MySQLi扩展学习(一)MySQLi介绍
新手拿到PHP网站源代码和sql数据库文件,从哪下手开始部署?
MySQL添加新用户、创建数据库、为新用户分配权限
myssqli和mysql的函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服