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

所属分类: 数据库 / Mysql 阅读数: 675
收藏 0 赞 0 分享

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

在网上搜索了一下它们的区别,有人已经说的很明白了,具体可以参看:https://www.jb51.net/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开启远程连接(mysql开启远程访问)

开启MYSQL远程连接权限的方法,大家参考使用吧
收藏 0 赞 0 分享

mysql动态游标学习(mysql存储过程游标)

mysql动态游标示例,通过准备语句、视图和静态游标实现,大家参考使用吧
收藏 0 赞 0 分享

使用mysqldump导入数据和mysqldump增量备份(mysqldump使用方法)

mysqldump常用于MySQL数据库逻辑备份,下面看实例吧
收藏 0 赞 0 分享

innodb 库的备份注意点(由phpmyadmin引起的解决方案)

新版本xampps 1.8.5 X64 集成了phpmyadmin最新版本(4.1.0), 可每次初始化安装程序后, 进入phpmyadmin管理工具, 就会发现phpmyadmin高级功能失效, 一直在提示数据表不存在, 经过再三的分析, 终于找到原因
收藏 0 赞 0 分享

mysql 误删除ibdata1之后的恢复方法

如果误删除了在线服务器中mysql innodb相关的数据文件ibdata1以及日志文件 ib_logfile*,应该怎样恢复呢
收藏 0 赞 0 分享

查看mysql语句运行时间的2种方法

网站运行很慢的时候,我就特别起知道为什么这么慢,所以我查啊查,数据库绝对是很重要的一部分,里面运行的sql是绝对不能放过的。平时做项目的时候,我也会注意sql语句的书写,写出一些高效的sql来,所以我会经常测试自己写的sql语句。我把我知道的二个方法,总结一下发出来
收藏 0 赞 0 分享

查看 MySQL 已经运行多长时间的方法

查看MySQL启动时间以及运行了多长时间的方法有利用show与updtime或在linux中直接使用grep mysql 相关参数来查看,下面我们一起来看看
收藏 0 赞 0 分享

innodb存储引擎修改表共享空间为独立空间

最近在优化mysql innodb存储引擎,把共享表空间转换成独立表空间,下面是详细步骤
收藏 0 赞 0 分享

MyEclipse连接MySQL数据库报错解决办法

我们现在一般网站都是利用的MySQL数据库搭建网站的,但是在网上看到很多网友吐槽数据库连接不上的问题,现在我就结合相关资料向提出一些我个人的见解,希望对大家解决问题有帮助
收藏 0 赞 0 分享

SQL Server 2005 安装遇到的错误提示和解决方法

在安装SQL Server 2005时有时会出现意想不到的问题,如IIS,性能计数器,OWC11,无法配置外围应用的问题,下面笔者分享一下在安装SQL Server 2005时常见问题解决方法
收藏 0 赞 0 分享
查看更多