当前位置: 首页 > 面试题库 >

mysqli :: mysqli():(HY000 / 2002):无法通过套接字'MySQL'连接到本地MySQL服务器(2)

凌朗
2023-03-14
问题内容

当我尝试使用php mysqli类连接到mysql数据库时,出现此错误。使用以下代码:

$db = new MySQLi("localhost","kamil","*****");
if (mysqli_connect_errno())
{
    echo "An error occured. Please try again later.";
    exit();
}

为了安全起见,密码为*。

我创建kamil了对外部IP地址和本地主机具有所有特权的用户。当我运行时:select user,host from mysql.user它会正确显示这两个用户。

我进行了一些研究,并使用此基准测试:https :
//stackoverflow.com/a/2183134/1839439来查看它所连接的内容。事实证明它是唯一能够连接到127.0.0.1127.0.0.1:3306其为localhost,但是当我提供localhost它抛出了这个错误。

我的问题是为什么它只允许我使用本地主机ip地址而不是名称或外部ip连接到数据库。如果要在网站上使用mysql还是可以使用mysql,是否需要其他主机127.0.0.1

编辑:
hosts文件

127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
fe00::0         ip6-localnet
ff00::0         ip6-mcastprefix
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

127.0.1.1       raspberrypi

此用户的Mysql用户表结果:

| kamil            | 109.255.177.28 |
| kamil            | localhost      |

问题答案:

当您仅使用“ localhost”时,MySQL客户端库将尝试使用Unix域套接字进行连接,而不是TCP /
IP连接。该错误告诉您,名为的套接字MySQL无法用于建立连接,可能是因为该套接字不存在(错误编号2)。

从MySQL文档:

在Unix上,MySQL程序特别对待主机名localhost,与其他基于网络的程序相比,它可能与您期望的不同。为了连接到本地主机,MySQL程序尝试使用Unix套接字文件连接到本地服务器。即使给
–port或-P选项指定端口号,也会发生这种情况。为确保客户端与本地服务器建立TCP / IP连接,请使用–host或-
h指定主机名值127.0.0.1,或本地服务器的IP地址或名称。您也可以使用–protocol =
TCP选项来显式指定连接协议,即使是本地主机也是如此。

有几种方法可以解决此问题。

  1. 您可以只使用TCP / IP而不是Unix套接字。您可以通过使用127.0.0.1代替localhost连接时进行此操作。但是,Unix套接字使用起来可能更快,更安全。
  2. 您可以在以下位置更改套接字php.ini:打开MySQL配置文件my.cnf以查找MySQL在何处创建套接字,并将PHP设置mysqli.default_socket为该路径。在我的系统上是/var/run/mysqld/mysqld.sock
  3. 打开连接时,直接在PHP脚本中配置套接字。例如:
    $db = new MySQLi('localhost', 'kamil', '***', '', 0, 
                              '/var/run/mysqld/mysqld.sock')
    


 类似资料:
  • 问题内容: 我在的Mac OS X Mountain Lion上安装了MySQL ,但尝试时出现以下错误: 错误2002(HY000):无法通过套接字’/tmp/mysql.sock’连接到本地MySQL服务器(2) 这个错误是什么意思?我该如何解决? 问题答案: 可能是因为MySQL已安装但尚未运行。 要验证它是否正在运行,请打开“活动监视器”,然后在“所有进程”下搜索并确认您看到了进程“ my

  • 我(在Ubuntu13上)使用 但是在跑步之后 然后输入密码,就会出现错误 错误2002(HY000):无法通过套接字/var/run/mysqld/mysqld.sock连接到本地MySQL服务器(2) 请引导。。。

  • 我犯了这个错误 尽管我已经在ubuntu中通过命令行启动了mysql 然而,当试图访问该站点时,我会遇到一个数据库连接错误,当试图通过 我检查了我的错误日志,我看到了这个 这是我第一次看到这个错误,我不知道如何解决这个问题,请帮我解决一下。 谢谢 使现代化 好的,我尝试了GLGL的解决方案,重新启动后,我在错误日志中得到以下信息:

  • 我在Ubuntu ;12.04 LTS(Precise Pangolin)上安装了LAMP,然后在phpMyAdmin上设置root密码。我忘记了密码,现在无法登录。当我试图通过终端更改密码时,我得到: 错误2002(HY000):无法通过套接字“/var/run/mysqld/mysqld.sock”(2)连接到本地MySQL服务器 我该怎么解决这个?我无法打开灯,卸载或重新安装。

  • 问题内容: 上传或提交页面时,我的网站上出现以下错误: mysql_real_escape_string()[function.mysql-real-escape- string]:无法通过套接字’/var/lib/mysql/mysql.sock’连接到本地MySQL服务器(2) 这到底是什么意思? 问题答案: 由于对该错误的调用引发了错误,因此它意味着您没有先调用该错误并将有效的数据库句柄传递

  • 问题内容: 错误2002(HY000):无法通过套接字’/var/run/mysqld/mysqld.sock’(2)连接到本地MySQL服务器 我尝试了在互联网上找到的所有内容,但是无法解决在Ubuntu 11.04上出现的问题。 我尝试了这些事情: 使用手动启动mysqld 使用启动mysqld 检查它是否正在使用并获得结果 在手动创建文件 授予用户权限 试图删除并重新安装,但仍然无法正常工作