mysql connect 不支持 mac_Warning: mysql_connect(): No such file or directory 解决方案总结(操作系统: Mac)...

本文介绍了在Mac OS X 10.11.4环境下,遇到mysql_connect()错误提示"No such file or directory"的问题及解决方案。问题源于PHP与MySQL的socket配置不一致。解决方法包括检查phpinfo()中的mysql.default_socket等配置,获取MySQL的UNIX socket路径,更新php.ini文件中的相应配置,并重启Apache服务。
摘要由CSDN通过智能技术生成

说明:

1. 运行环境: Mac OS X 10.11.4 (Mac 已经自带 Apache, PHP)

2. 相关文件夹:

/etc/apache2/     ##Apache 配置文件夹

/Library/WebServer/Documents/    ##Apache 默认站点

/usr/local/mysql-5.7.11-osx10.9-x86_64      ##mysql安装路径

/private/php.ini.default      ##php的配置文件: 如配置 mysql.sock

>>问题原因:

For some reason mysql on OS X gets the locations of the required socket file a bit wrong, but thankfully the solution is as simple as setting up a symbolic link.

You may have a socket (appearing as a zero length file) as /tmp/mysql.sock or /var/mysql/mysql.sock but 1 or more apps is looking in the other location for it.

大神解释说: PHP 在 MySQL socket 方面, 默认的配置有问题. 那么现在只要修改 PHP 的配置文件, 配置正确的 MySQL socket 路径就可以了.

>>解决方案:

1. 获取当前 mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket 配置信息

建立一个 PHP 文件, 显示 phpinfo():

echo phpinfo();

用浏览器打开:

56f075d3d4c22605440cee00fbe8ab86.png

在此页面,找到mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket信息:

031cbedee9132ad0ecd1a82a3879c2aa.png

ccc77e8eaecd14c6fd5d283d2e86536a.png

d4589897295220c07f1c51e5660bcbb3.png

2. 获取 Mac MySQL socket 路径

通过控制台进入 MySQL, 输入命令: STATUS, 查找 UNIX socket 值

? / mysql -u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 8

Server version: 5.7.11 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

mysql> STATUS

--------------

mysql Ver 14.14 Distrib 5.7.11, for osx10.9 (x86_64) using EditLine wrapper

Connection id:8

Current database:

Current user:root@localhost

SSL:Not in use

Current pager:less

Using outfile:‘‘

Using delimiter:;

Server version:5.7.11 MySQL Community Server (GPL)

Protocol version:10

Connection:Localhost via UNIX socket

Server characterset:utf8

Db characterset:utf8

Client characterset:utf8

Conn. characterset:utf8

UNIX socket:/tmp/mysql.sock

Uptime:8 days 15 hours 1 min 17 sec

Threads: 2 Questions: 21 Slow queries: 0 Opens: 114 Flush tables: 1 Open tables: 0 Queries per second avg: 0.000

--------------

3. 这时候, 你对比 mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket 和 通过 MySQL UNIX socket 发现不一样, 这就是 mysql_connect(); 警告的原因: PHP 配置 mysql 有问题.

4. 重新配置 PHP, 打开php.ini(默认位置是: /private/etc/php.ini )

cd /private/etc/

chmod +rwx php.ini ##修改文件权限

vim php.ini

之后修改mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket 的值为: /tmp/mysql.sock

(一共修改三处,分别为:mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket)

注意:

若用 vim php.ini 打开的文件为空(我操作的时候, 就是这样), 说明没有 php.ini 这个文件

这个时候, 你浏览 /etc/ 文件夹下, 会有 php.ini.default 文件, 复制 php.ini.default 重命名为 php.ini , 再用 vim 修改文件内容

cd /private/etc/

cp php.ini.default php.ini ##复制 php.ini.default, 并且重命名

chmod +rwx php.ini ##修改文件权限

vim php.ini

5,重启apache

sudo apachectl restart ##重启 apache

解决啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值