Macos解决无法使用localhost连接mysql问题
今天在mac上搭建好了php的环境,把先前在window、linux下运行良好的程序放在mac上,居然出现访问不了数据库,数据库连接的host用的是localhost,可以确认数据库配置是正确的,因为在java中使用localhost访问正常,另外通过命令行工具也能正常访问。当把localhost换成127.0.0.1或者本机的IP时,居然正常了。以前一直认为localhost与127.0.0.1是一回事,现在事实证明它们其中还是有区别的。
上面提到区别就是导致mac下无法连接数据库的原因。那为什么socket方式无法连接呢?由于macoslion上已经自带了apache和php,我的环境使用就使用默认的,mysql服务是在官网下载dmg安装最近版本,php的配置文件(/ect/php.ini)中设置有三个地方(mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket)设置了mysqlsocket文件存放的位置,其默认值为/var/mysql/mysql.sock。查看mysql服务使用的socket文件有两种方式
方法1:
echo"showvariables"|mysql|grep"socket"
方法二:
echo"status"|mysql|grep"socket"
注意:如果mysql设置了密码,使用-u,-p来指定用户名和密码
这里看到mysql的socket文件存放位置为/tmp/mysql.sock。
看到这儿应该知道问题所在了吧,使用localhost连接失败的原因为在socket的方式下,php默认配置的mysql服务的socket文件不存在,所以导致连接失败,如果把连接失败的错误信息dump出来,你应该会看到错误信息中包含了“Nosuchfileordirectory”。
知道原因就容易修改了,只需要把php配置文件中mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket这三项值修改为mysql服务配置对应值即可,修改好后需要重启apache服务。当然也可以修改mysql配置文件中的socket信息,使其保持一致即可,修改好后重启mysql服务。
相关文章
- 解决CSV导入MySQL乱码问题(csv导入mysql乱码)
- MySQL远程连接指南:开启步骤(mysql开启远程连接)
- MySQL字符串连接:最佳实践(mysql字符串连接符)
- MySQL:设置字段不为空的方法(mysql字段非空)
- JavaScript连接MySQL数据库:深入解析(js链接mysql)
- 据库运维Mysql小型数据库的运维实践(mysql小数)
- 解决MySQL连接数被修改的可行方法(mysql修改连接数)
- MySQL 交叉连接技术实现深度数据挖掘(mysql交叉连接)
- 快速掌握MySQL数据库基础知识,轻松入门数据库世界!(mysql数据库基本知识)
- 如何得心应手地学习MySQL数据库(mysql数据库怎么学)
- MySQL数据库连接断开的问题处理(mysql断开数据库)
- 如何正确配置MySQL数据库连接标识?(mysql数据库连接标识)
- MySQL 日期格式转换简明指南(mysql日期转换)
- MySQL主从数据同步实现高可用性(mysql 主从数据同步)
- 本MySQL:云升级,强劲新版本尽享进化(云数据库 mysql 版)
- JDBC连接MySQL极速开发体验(jdbc mysql @)
- 使用MySQL学习韩语:让你学下汗语更容易!(mysql韩语)
- C与MySQL的连接实现数据库操作的最佳选择(c net连接mysql)
- 数据库从命令行连接MySQL数据库一步一步操作指南(cmd连接外部mysql)
- ASP无法连接MySQL数据库解决方案(asp连不上mysql)
- ADO技术实现MySQL数据库连接(ado方式连接mysql)
- cmd终端连接MySQL一步步操作指南(cmd到mysql)
- YML配置MySQL解决数据库连接问题(.yml中配置mysql)
- 如何使用Python连接MySQL数据库(mysql_connet)
- 轻松获取MySQL x86下载,提升数据库查询性能(mysql x86 下载)