使用 localhost 无法连接 MySQL 数据库的解决方案
来源:互联网 发布:微信刷砍价软件 编辑:程序博客网 时间:2024/04/27 21:53
使用 localhost 无法连接 MySQL 数据库的解决方案
Tip:这几天在研究LAMP/WAMP及discuz的时候却发觉在装mysql及php的时候,用php连接mysql的时候死活连不上,我的代码如下:
<?php
$conn=mysql_connect("localhost","root","5015557");//不能连接上
// $conn=mysql_connect("127.0.0.1","root","5015557");//能连接上
if($conn)
{
echo "success";
}
else
{
echo "failed";
}
?>
研究发现,用localhost连接的时候死活连不上(提示超时,曾经一度想要修改mysql的连接超时时间),而改用127.0.0.1连接的时候却轻松的连接上了后来才发现原来是IPV6的问题。
phpMyAdmin 是用 PHP 编写的基于 Web 的,最出色的 MySQL 数据库图形用户界面管理平台之一,通过它可以方便的对数据库进行操作,例如建立、复制、删除数据等等,输却无需逐字逐句地输入 SQL 命令。phpMyAdmin 的使用不是本文的重点,在作者刚刚接触这个软件时,配置是一个大问题(事实上对于很多初学者甚至熟练的程序员都一样),本文主要解决 Windows Vista 和 Windows 7 等平台下 phpMyAdmin 的连接问题。
在保证其它配置都完全正确的前提下,我发现自己的"服务器"(Windows 7 32bit)始终无法正确连接到 MySQL 服务器。在网上搜索问题时发现有不少站长也遇到了同样的困惑,但却找不到解决方案。情况类似,无法使用"localhost"连接到 MySQL 服务器,而用 127.0.0.1 却可以。起初作者也弄不明白这是为什么,几乎绝大部分的网络教材都把 localhost 等同于 127.0.0.1 本地回环地址。而事实上是的,只是在 WinVista 及 Win7 下,localhost 有着另外一个更高层次的含义。
在 Win7 命令提示符(CMD)下 Ping localhost 有如下结果:
正在 Ping WinSeven-PC [::1] 具有 32 字节的数据:
来自 ::1 的回复: 时间<1ms
来自 ::1 的回复: 时间<1ms
来自 ::1 的回复: 时间<1ms
来自 ::1 的回复: 时间<1ms
::1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
从上面可以清楚地看出环回没有问题,可是为什么 Ping localhost 回复地址却是"::1","::1"是什么东西?
原来自从 WinVista 开始,Windows 系统就默认开启了 IPv6 协议,而这个"::1"正是 IPv6 的环回地址(00:00:00:00:00:00:00:01 的压缩形式),但是 MySQL的常规版本并不支持通过 IPv6 连接,这该如何解决,难道要关闭 IPv6 协议吗?这是一种解决方法,不过也可以通过修改 host 来解决。
从 WinVista 和 Win7 的 hosts 文件里可以看出,localhost 并没有直接被解析为 127.0.0.1 ,而是 DNS 将根据当前连接的协议来自动选择将其解析为 v4 地址还是 v6 地址:
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
而在此我们为了解决 localhost 的连接问题,可以给 host 加上这么一条,以告诉系统强制使用 IPv4 连接。直接在 hosts 文件的末尾加上
127.0.0.1 localhost
这一条语句(需要修改文件权限)。再次 Ping 一下 localhost:
正在 Ping WinSeven-PC [127.0.0.1] 具有 32 字节的数据:
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
127.0.0.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失)
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0 ms,平均 = 0ms
可以看出 localhost 已经被强制解析为 IPv4 的环回地址。觉得繁琐的网友,可以直接使用 127.0.0.1 替换 localhost 来连接,效果都是一样的,在性能上可能有所差异。另外最新版本的 phpMyAdmin 已经提供了图形界面的配置文件自动生成及下载功能,默认位于 phpMyAdmin/Setup/ 目录下,根据提示要求进行相应设置,然后将 config.inc.php 文件下载并放到 phpMyAdmin 根目录即可。
- 使用 localhost 无法连接 MySQL 数据库的解决方案
- 无法连接远程MySQL数据库的解决方案
- MYSQL数据库无法用IP连接只能用localhost连接
- 如何解决 CentOS系统下 使用localhost无法连接数据库
- 使用localhost和127.0.0.1都无法连接mysql
- 【php】Apache无法自动跳转却显示目录与php无法连接mysql数据库的解决方案
- 使用JDBC连接mysql数据库遇到的问题及解决方案
- <php+mysql>从PHP连接数据库,以及mysqli_connect()不能使用localhost的解答
- 数据库无法连接的解决方案之一
- 使用navicat工具无法连接MySQL数据库的解决方法
- MySQL 连接数据库解决方案。
- MySQL可以用localhost连接,使用IP地址无法连接问题
- mysql远程连接数据库慢的解决方案
- java连接mysql数据库乱码的解决方案
- 无法连接mysql数据库
- MacBook PHP5 升级到PHP7后无法连接localhost服务器的解决方案
- win7下使用localhost连接mysql无效的解决办法
- PHP中使用localhost连接Mysql不成功的解决方法 【转】
- HTML5之canvas绘制图片
- android中的spannable的使用
- ubuntu系统下如何使用vim 文本编辑器?
- ifenslave双网卡绑定单IP
- ANDROID 高效调试神器 JREBEL 加速编译
- 使用 localhost 无法连接 MySQL 数据库的解决方案
- linux 中的wc命令
- 2016 Y GDUT新生杯决赛 Problem F: 神偷TMK
- 241. Different Ways to Add Parentheses
- java学习:软件开发七大难点原因
- 仿QQ的密码保存,点击按钮选择其他账号
- APS Interview - Principles of Computer Organization
- mybatis 字符串比较 == 用法
- for循环优化 测试