首页 文章

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

提问于
浏览
8

OS: Ubuntu 14.04 LTS

php version control : phpbrew

php version : 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 回答

  • 2

    在许多情况下, localhost 是一个使用UNIX套接字连接到MySQL服务器进程的提示,其中 127.0.0.1 强制TCP连接 . 有时UNIX套接字处于意外的位置,或者根本无法访问,这会导致"file not found"错误 .

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

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

  • 2

    这个问题的答案是在my.cnf里面

    /etc/mysql/my.cnf
    

    这条线也是

    bind-address = 127.0.0.1
    

    要么

    bind-address = localhost
    

    应该是的

    bind-address = 0.0.0.0
    

    这将允许所有连接

  • 3

    PHP仍在尝试使用默认套接字位置 . 如果从/ var / lib / mysql到另一个位置 moved the MariaDB/MySQL folder ,则会出现此问题 . 为了解决这个问题,你必须在/etc/php.ini文件中定义新套接字的位置 .

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

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

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

    select @@datadir;
    

相关问题