麻烦连接到phpMyAdmin MySQL数据库

时间:2014-01-03 22:18:18

标签: php mysql database phpmyadmin database-connection

我是非常新的php,每当我尝试加载需要访问我在 phpMyAdmin

上设置的数据库的php页面时,我都会收到错误

以下是错误:

  

数据库连接失败:无法连接到本地MySQL服务器   通过socket'/tmp/mysql.sock'(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 让我的计算机上的数据库正常工作,但这是我第一次尝试让所有内容在线工作,所以我不知道如果这是我的一个愚蠢的错误,或者它是更大的东西。

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

感谢您的帮助!!

2 个答案:

答案 0 :(得分:0)

这意味着你没有访问phpMyAdmin的权限,或者那个套接字不存在。尝试重新安装phpMyAdmin。

答案 1 :(得分:0)

您必须找到一种连接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&gt; shell提示符,键入“STATUS”并查找Connection行,该行可能通过UNIX套接字读取Localhost;然后你可能会看到像“UNIX socket:/var/run/mysqld/mysql.sock”这样的行,在这种情况下,你只需告诉你的PHP脚本或全局PHP配置有关套接字路径,因为现在它正在寻找/tmp/mysql.sock不存在。

你也可以在登录phpMyAdmin时看到这个,它应该在页面的右侧显示一些“数据库服务器”信息 - 在这里查看“服务器”行可能会读到类似“phpMyAdmin demo”的内容 - MySQL(通过TCP / IP实现192.168.30.23“(清楚地表示您通过TCP连接)。

无论如何,无论您使用哪种方法查找套接字路径或决定使用TCP网络,请参阅PHP manual page以获取有关使用该网络进行连接的信息。您也可以在php.ini中为套接字设置全局路径(我建议您这样做),然后您不必在每个脚本中手动设置它,因为它只使用php.ini设置默认。您可能需要为pdo_mysql.default_socket,mysql.default_socket和mysqli.default_socket设置每个值(虽然在您的代码中您只使用mysqli,所以从技术上讲,您只需要设置最后一个值...但为什么要冒险将你未来的自我混淆为诸如“为什么mysqli会工作但是pdo失败?”这样的问题 - 现在就把它们全部设置好并且不要担心它。)

希望这有帮助。