无法通过php使用Bitnami灯堆栈连接到mysql

Posted

技术标签:

【中文标题】无法通过php使用Bitnami灯堆栈连接到mysql【英文标题】:Can't connect to mysql using Bitnami lamp stack through php 【发布时间】:2010-12-14 07:30:00 【问题描述】:

好的,这将是一个很长的问题。

我正在尝试在我的大学帐户上启动并运行一些东西。我们有一个 public_html 文件夹,我们可以将其用作 Web 空间来托管我们想要的任何内容。

我已经在 public_html 文件夹中安装了 Bitnami 灯堆栈(可能不是最好的主意,安全方面,但我只会测试这个应用程序几天并将它拉下来,所以我真的不关心这么久,我可以让它快速启动并运行)并且我想要托管的网站运行良好并且可以通过(http://(uni 地址)/(我的帐户名)/public_html/lamp/apache2/htdocs/(等等..)。但是,连接到数据库的代码的某些部分给了我以下警告:

Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

我正在使用以下代码连接到数据库:

mysql_connect($CFG->dbhost,$CFG->dbuser,$CFG->dbpass);

其中 dbhost 是“本地主机”。

因为它引用 /var/run/mysqld/mysqld.sock - 这显然意味着它试图连接到错误的东西,因为我安装的灯堆栈中的 mysql 在其 my.cnf 中有以下内容:

[mysqladmin]
user=root

[mysqld]
basedir=(my account folder)/public_html/lamp/mysql
datadir=(my account folder)/public_html/lamp/mysql/data
port=3306
socket=(my account folder)/public_html/lamp/mysql/tmp/mysql.sock
tmpdir=(my account folder)/public_html/lamp/mysql/tmp

[mysqld_safe]
mysqld=mysqld.bin

[client]
port=3306
socket=(my account folder)/public_html/lamp/mysql/tmp/mysql.sock

[manager]
port=3306
socket=(my account folder)/public_html/lamp/mysql/tmp/mysql.sock
pid-file=(my account folder)/public_html/lamp/mysql/tmp/manager.pid
default-mysqld-path=(my account folder)/public_html/lamp/mysql/bin/mysqld.bin

所以我的问题是,有人知道如何让它连接到正确的套接字吗?此外, var/run/mysqld/mysqld.sock 根本不存在,我显然没有创建它的权限(我根本看不到它是如何服务于我的目的的)。

从昨天开始就一直困扰着我。任何帮助将不胜感激。

干杯!

【问题讨论】:

【参考方案1】:

您可能必须通过使 $CFG->dbhost 指向套接字文件

$CFG->dbhost = ':(my account folder)/public_html/lamp/mysql/tmp/mysql.sock';
$link = mysql_connect($CFG->dbhost,$CFG->dbuser,$CFG->dbpass);

看看有没有用!

另一个建议是,您还应该确保套接字文件实际上是由您的 mysql 服务在该位置“(我的帐户文件夹)/public_html/lamp/mysql/tmp/mysql.sock”创建的


编辑:

我们只需要确认您的 mysql sock 文件的路径是有效的,并且文件已经被创建,看起来是这样的。

您能否确认您可以从命令行手动连接到 mysql 服务器,这将是帮助诊断的另一个好步骤。

mysql --socket=<my account folder>/public_html/lamp/mysql/tmp/mysql.sock -u <username> -p

编辑 2:

当您在上面的示例中替换您的帐户文件夹时,只需快速确认您使用的是文件的完整路径。

例如

/home/<username>/public_html/lamp/mysql/tmp/mysql.sock

【讨论】:

如何检查文件是否由我的mysql服务创建?我推测这是因为它是在安装 bitnami 灯组后创建的。另外,我尝试了示例#3。它给了我同样的警告,我仔细检查了 mysql.sock 的位置,它肯定在那里,我允许完全访问它。再次感谢 是的。我已经尝试过“/home/”和完整路径文件,以防我使用“/home/”时无法正确重定向。 你通过命令行连接到mysql服务器了吗? 嗯,如果您可以通过套接字连接到 mysql 服务器,那么当您指定适当的套接字时,您“应该”能够通过 php。您能否确认您使用的是所需的确切符号,例如“:/tmp/mysql”,或者您可以尝试“localhost:/tmp/mysql”符号,您必须确保您的字符串中没有缺少“:”如果这仍然不起作用,您能否提供错误消息和 mysql_error() 的输出以及新的套接字文件。 是的,我已经尝试了几个组合,都带有“:”,但它仍然是相同的警告。也许是我大学的防火墙阻止了它正确连接?可能。我已经设法让它在不同的服务器上工作,所以它不再重要了。非常感谢您的帮助!非常感谢!

以上是关于无法通过php使用Bitnami灯堆栈连接到mysql的主要内容,如果未能解决你的问题,请参考以下文章

无法将R连接到AWS中的Bitnami服务器中托管的mysql

无法连接到 AWS 托管的 Bitnami 实例中的 phpmyadmin

在 bitnami 灯堆栈实例上运行 nodejs 应用程序

无法在 Bitnami LAMP 堆栈上使用 Cron 运行 PHP Artisan 命令

MongoDB 连接到 AWS 上的节点 平均堆栈

[翻译]windows下 连接到 bitnami的phpmyadmin