2009-11-08 3 views
3

Хорошо, это будет длинный вопрос.Невозможно подключиться к mysql, используя стек батареи Bitnami через php

Я пытаюсь получить что-то на моем учете в университете. У нас есть папка public_html, которую мы можем использовать в качестве веб-пространства для размещения всего, что мы хотим там.

Я установил стек батареи Bitnami в папке public_html (возможно, не лучшая идея, с точки зрения безопасности, но я буду тестировать это приложение только на пару дней и вытащить его, так что я могу быстро его запустить и быстро запустить), и сайт, который я хочу разместить, работает нормально и доступен через (http: // (uni address)/(мое имя учетной записи)/public_html/lamp/apache2/htdocs/. (и т.д ..) Тем не менее, некоторые части кода, который подключается к Databse дает мне следующее предупреждение:

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 вообще не существует, и я, очевидно, не имею разрешения на его создание (не то, что я вижу, как он служит моей цели вообще).

Это сотрясало меня со вчерашнего дня. Любая помощь будет принята с благодарностью.

Cheers!

ответ

1

Вы, возможно, придется указать сокет, определенный в my.cnf, используя mysql_connect (вы должны быть в состоянии видеть функциональный expample в примере 3 #) вместо локального хоста, сделав $ CFG-> DBHost точки к файлу сокета

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

Посмотрите, работает ли это!

Другим словом консультации вы также должны убедиться, что файл сокет фактически создаются вашей служба тузда в этом месте «(моя папка учетной записи) /public_html/lamp/mysql/tmp/mysql.sock»


Edit:

Мы просто необходимы, чтобы подтвердить, что путь к файлу носка тузды был действительным, и файл был создан, который он, кажется, был.

Можете ли вы также подтвердить, что вы можете вручную подключиться к серверу mysql из командной строки, что было бы еще одним хорошим шагом для диагностики.

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

Edit 2:

Только быстрое подтверждение того, что вы используете полный путь к файлу, когда вы подставляя вы объясняете папку в приведенных выше примерах.

например.

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

Как проверить, создан ли файл моей службой mysql? Я предполагаю, что это было с тех пор, как он был создан после установки битнами лампы. Кроме того, я попробовал пример №3. Это дает мне то же предупреждение, и я дважды проверял местоположение mysql.sock, и это определенно есть, и я разрешил ему полный доступ. Еще раз спасибо – MikiRei

+0

Да. Я пробовал как «/ home/», так и полный файл пути в случае, если он не перенаправляется правильно, если я использовал «/ home/». – MikiRei

+0

Удалось ли вам подключиться к серверу mysql через командную строку? – houmam