通过localhost连接MySQL无法正常工作,但127.0.0.1正在运行

时间:2015-07-14 17:45:09

标签: mysql sockets connection localhost

操作系统: Ubuntu 14.04 LTS

php版本控制: phpbrew

php版本: 5.5.10

我ping localhost,解析为127.0.0.1。

这表明我的主机(/ etc / hosts)文件是正确的。

127.0.0.1 localhost

每当我尝试使用类似下面的PHP脚本连接MySQL时,它都不起作用并给我错误:没有这样的目录。

    //connect to the database
    mysql_connect("localhost","root","password") or die(mysql_error());

然而,当我通过127.0.0.1连接时,它将起作用

 //connect to the database
        mysql_connect("127.0.0.1","root","password") or die(mysql_error());

此外,使用" localhost"登录时,我的phpmyadmin无效。我必须在登录期间更改文件以添加127.0.0.1选项。

如何使用localhost连接MySQL数据库?

3 个答案:

答案 0 :(得分:3)

在许多情况下localhost提示使用UNIX套接字连接到MySQL服务器进程,其中127.0.0.1强制TCP连接。有时UNIX套接字处于意外的位置,或者根本无法访问,这会导致“找不到文件”错误。

套接字通常类似于/tmp/mysql.sock,或者可能位于其他位置,具体取决于您的发布以及您对其进行了多少定制。

请记住,通过UNIX套接字(根据定义,服务器本地)和TCP的访问由两个不同的规则控制。 localhost中的GRANT指的是UNIX套接字。 %或某个特定的主机名是指通过TCP远程访问。

答案 1 :(得分:2)

这个问题的答案是位于

内的my.cnf
/etc/mysql/my.cnf
该行是

bind-address = 127.0.0.1 

bind-address = localhost 

应该是

bind-address = 0.0.0.0

将允许所有连接

答案 2 :(得分:2)

PHP仍在尝试使用默认套接字位置。如果将MariaDB / MySQL文件夹 / var / lib / mysql 移动到另一个位置,则会出现此问题。要解决此问题,您必须在 /etc/php.ini 文件中定义新套接字的位置。

data = 'Im extra <i data-emoji=":)" class="emoji emoji-happy"></i> today! But was like <i data-emoji=":(" class="emoji emoji-unhappy"></i> yesterday.';
console.log(data.replace(/<i.*?data-emoji="(.*?)".*?\/i>/g, '$1'));

注意,根据您使用的驱动程序,您可能必须指定 pdo_mysql.default_socket =

为了检查当前目录,请在mysql中运行以下命令:

mysqli.default_socket =/newDBLocation/mysql/mysql.sock