分享好友 数据库首页 频道列表

Mac os 解决无法使用localhost连接mysql问题

MySQL教程  2015-11-23 10:520

今天在mac上搭建好了php的环境,把先前在window、linux下运行良好的程序放在mac上,居然出现访问不了数据库,数据库连接的host用的是localhost,可以确认数据库配置是正确的,因为在java中使用localhost访问正常,另外通过命令行工具也能正常访问。当把localhost换成127.0.0.1或者本机的IP时,居然正常了。以前一直认为localhost与127.0.0.1是一回事,现在事实证明它们其中还是有区别的。

在网上搜索了一下它们的区别,有人已经说的很明白了,具体可以参看:http://www.lexue001.com/article/50422.htm。它们的主要区别是localhost是通过socket方式来连接,而127.0.0.1则是走的TCP协议。

上面提到区别就是导致mac下无法连接数据库的原因。那为什么socket方式无法连接呢?由于mac os lion上已经自带了apache和php,我的环境使用就使用默认的,mysql服务是在官网下载dmg安装最近版本,php的配置文件(/ect/php.ini)中设置有三个地方(mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket)设置了mysql socket文件存放的位置,其默认值为/var/mysql/mysql.sock。查看mysql服务使用的socket文件有两种方式
方法1:

复制代码 代码如下:

echo "show variables" | mysql | grep "socket"

方法二:

复制代码 代码如下:

echo "status" | mysql | grep "socket"

注意:如果mysql设置了密码,使用-u,-p来指定用户名和密码
这里看到mysql的socket文件存放位置为/tmp/mysql.sock。

看到这儿应该知道问题所在了吧,使用localhost连接失败的原因为在socket的方式下,php默认配置的mysql服务的socket文件不存在,所以导致连接失败,如果把连接失败的错误信息dump出来,你应该会看到错误信息中包含了“No such file or directory”。

知道原因就容易修改了,只需要把php配置文件中mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket这三项值修改为mysql服务配置对应值即可,修改好后需要重启apache服务。当然也可以修改mysql配置文件中的socket信息,使其保持一致即可,修改好后重启mysql服务。

查看更多关于【MySQL教程】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:解决办法
激动的心,颤抖的手。本来web项目数据库连接的好好地,突然就连不上了,一直报java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:错误(未找到数据库驱动),今天终于解决了,记录一下,免得忘了下次再出错又浪费超长时间。1、检

0评论2023-02-10362

mysql导入sql文件错误#1044 - Access denied for user 'root'@'localhost'
在我的个人知识管理中,经常用到mysql数据库,wordpress搭建的worklog、搜索测试数据、我blog的测试环境等。我在自己的电脑上整了WAMP(Windows Apache MySQL PHP),哈哈,不是LAMP,用linux做桌面和周围的同事沟通还是不顺畅。十一前换了台新的笔记本,原来

0评论2023-02-09963

IPv6设置后如何解决MySQL无法连接localhost的问题
这篇文章主要介绍了IPv6设置后如何解决MySQL无法连接localhost的问题,需要的朋友可以参考下

0评论2016-05-18222

php mysql localhost,127.0.0.1和ip区别
localhost与127.0.0.1的区别是什么?相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以减少一次解析。看来这个入门问题还有人不清楚,其实这两者是有区别的

0评论2015-11-23159

mysql Access denied for user ‘root’@’localhost’ (using password: YES)解决方法
这篇文章主要介绍了mysql Access denied for user ‘root’@’localhost’ (using password: YES)解决方法,本文给出详细的解决步骤及操作注释,需要的朋友可以参考下

0评论2015-11-13101

mysql ERROR 1044 (42000): Access denied for user ''@'localhost' to database
这篇文章主要介绍了mysql下提示ERROR 1044 (42000): Access denied for user ''@'localhost' to database,需要的朋友可以参考下

0评论2015-11-12162

Can't connect to MySQL server on 'localhost' (10048)问题解决方法
windows 2003服务器运行php的提示Can't connect to MySQL server on 'localhost' (10048), 下面来看下解决方法

0评论2015-11-07111

更多推荐