繁体   English   中英

无法连接到phpMyAdmin MySQL数据库

[英]Trouble Connection to phpMyAdmin MySQL database

我是php的新手,每当尝试加载需要访问在phpMyAdmin上设置的数据库的php页面时,都会收到错误消息

这是错误:

数据库连接失败:无法通过套接字'/tmp/mysql.sock'连接到本地MySQL服务器(46)(2002)

我用于连接的代码是这样的:

<?php
define("DB_SERVER", "localhost");
define("DB_USER", "xxxx");
define("DB_PASS", "xxxx");
define("DB_NAME", "tester");

$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);

// Test if connection occurred.
if(mysqli_connect_errno()) {
    die("Database connection failed: " .
        mysqli_connect_error() .
        " (" . mysqli_connect_errno() . ")"
    );
}
?>

我按照托管我的网站的站点上的指示在服务器上设置了phpMyAdmin,因此,我敢肯定我正确地做到了。

通过使用WAMP ,我已经能够使数据库在我的计算机上正常工作,但这是我第一次真正尝试使所有内容都可以在线工作,所以我不知道这是否是一个愚蠢的错误,或者更大的东西。

我也不知道什么是套接字,所以我不确定如何解决这个问题。

谢谢你的帮助!!

这意味着您没有权限访问phpMyAdmin或该套接字不存在。 尝试重新安装phpMyAdmin。

您必须找到一种连接到MySQL实例的方法。 有两种方法,TCP(即使网络地址为127.0.0.1,也要联网)和套接字(/var/run/mysqld/mysql.sock之类的文件)。 通常,将MySQL配置为开箱即用,可以同时监听两者,并且通常两者之间几乎没有区别。 在创建或编辑与连接类型匹配的权限时,您必须小心,用户bob @ localhost与用户bob@127.0.0.1不同。 我倾向于使用套接字,这也是您的脚本默认尝试执行的操作。 您可以告诉它通过TCP连接,但是告诉它正确的套接字路径也很容易。

无论如何,对我来说最快的解决方法是尝试使用命令行工具。 如果可以在命令行上执行mysql -u root -p并得到MYSQL> shell提示符,请键入“ STATUS”并查找“ Connection”行,该行可能会通过UNIX套接字读取Localhost; 再往下看,您可能会看到类似“ UNIX套接字:/var/run/mysqld/mysql.sock”的行,在这种情况下,您只需告诉您的PHP脚本或全局PHP配置有关套接字的路径,因为现在它正在查找/tmp/mysql.sock不存在。

您也可以在登录phpMyAdmin时看到此消息,它应该在页面的右侧显示一些“数据库服务器”信息-在此处查找“服务器”行,其中可能显示类似“ phpMyAdmin演示-MySQL( 192.168.30.23通过TCP / IP”(明确表明您正在通过TCP连接)。

无论如何,无论您使用哪种方法查找套接字的路径或决定使用TCP网络,请参见PHP手册页以获取有关使用该方法进行连接的信息。 您也可以只在php.ini中为套接字设置全局路径(这是我建议您执行的操作),那么您不必在每个脚本中手动设置它,因为它只使用php.ini设置为默认值。 您可能需要设置pdo_mysql.default_socket,mysql.default_socket和mysqli.default_socket的每个值(尽管在代码中您仅使用mysqli,所以从技术上讲,您只需要设置最后一个值...但是为什么要冒险将诸如“为什么mysqli会起作用但pdo会失败?”之类的问题使您的未来自我困惑-只需立即设置它们,不必担心)。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM