我试图连接到我的MySQL数据库与终端在我的苹果(与PHP)。

昨天它工作正常,现在我突然得到错误的标题。

当我使用浏览器运行该脚本时(我已经安装了XAMPP),但终端拒绝连接到DB。

下面是我要连接的文件(当我不包括这个时,脚本工作,但它不连接到DB):

<?php
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("FNB1C_data") or die(mysql_error());
?>

这应该可以工作,因为它适用于我的浏览器。

我在终端上使用的命令是php scriptname.php。


当前回答

因为您可能使用MAMP,所以您可以将端口更改为默认的3306,或者在database.php中使用127.0.0.1

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',// leave it for port 3306
    'username' => 'yourUserhere',
    'password' => 'yourPassword',
    'database' => 'yourDatabase',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

或者使用默认设置:

$db['default'] = array(
        'dsn'   => '',
        'hostname' => '127.0.0.1:8889',// leave it for port 8889
        'username' => 'yourUserhere',
        'password' => 'yourPassword',
        'database' => 'yourDatabase',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => (ENVIRONMENT !== 'production'),
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array(),
        'save_queries' => TRUE
    );

其他回答

原因是php无法找到mysql.sock的正确路径。

请确保您的mysql首先运行。

然后,请确认哪个路径是mysql。Sock,例如/tmp/mysql.sock

然后将这个路径字符串添加到php.ini:

Mysql.default_socket = /tmp/mysql.sock Mysqli.default_socket = /tmp/mysql.sock Pdo_mysql.default_socket = /tmp/mysql.sock

最后,重新启动Apache。

另一个解决方案是修复php.ini配置文件中的套接字位置,就像这样:

pdo_mysql.default_socket=/tmp/mysql.sock

当然,符号链接也可以工作,所以这是一个你改变的偏好问题。

我得到了同样的错误。 在我启动phpMyAdmin之前,Mysql是作为一个独立的应用程序运行的。

我停止了mysql 然后 sudo /Applications/XAMPP/xamppfiles/ XAMPP stop sudo /Applications/XAMPP/xamppfiles/ XAMPP start

它运行得很好

因为您可能使用MAMP,所以您可以将端口更改为默认的3306,或者在database.php中使用127.0.0.1

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',// leave it for port 3306
    'username' => 'yourUserhere',
    'password' => 'yourPassword',
    'database' => 'yourDatabase',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

或者使用默认设置:

$db['default'] = array(
        'dsn'   => '',
        'hostname' => '127.0.0.1:8889',// leave it for port 8889
        'username' => 'yourUserhere',
        'password' => 'yourPassword',
        'database' => 'yourDatabase',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => (ENVIRONMENT !== 'production'),
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array(),
        'save_queries' => TRUE
    );

mySQL客户端默认尝试通过一个称为套接字的本地文件进行连接,而不是连接到本地主机的环回地址(127.0.0.1)。

至少在OSX上,这个套接字文件的默认位置是/tmp/mysql.sock。

快速,不那么优雅的解决方案

创建一个符号链接来欺骗操作系统找到正确的套接字。

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp

妥善解决

修改/Applications/MAMP/bin目录下startMysql.sh文件中定义的套接字路径。