好的,这将是一个很长的问题。
我正在尝试在我的大学帐户上运行并运行。我们有一个public_html文件夹,我们可以将其用作网络空间来托管我们想要的任何内容。
我已经在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是'localhost'。
因为它引用了/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根本不存在,我显然没有创建它的权限(不是我看到它完全符合我的目的)。
从昨天起,这一直困扰着我。任何帮助将不胜感激。
干杯!
答案 0 :(得分:1)
您可能必须使用mysql_connect指定my.cnf中定义的套接字(您应该能够在示例#3中看到功能性示例)而不是localhost,方法是将$ 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:
在您替换上述示例中的帐户文件夹时,只需快速确认您使用的是文件的完整路径。
e.g。
/home/<username>/public_html/lamp/mysql/tmp/mysql.sock