Сабж, кроме базы данных, созданной при установке, которая называется test. Права у всех баз одинаковые, но вот соединяется почему-то только с одной. В чем может быть проблема?
>Сабж, кроме базы данных, созданной при установке, которая называется test.
>Права у всех баз одинаковые, но вот соединяется почему-то только с одной.
>В чем может быть проблема?Нельзя ли поподробнее - кто и с кем не соединяется? Сервер? Клиент? Сообщения об ошибках? Логи? Если не военная тайна, конечно :)
>Нельзя ли поподробнее - кто и с кем не соединяется? Сервер? Клиент?
>Сообщения об ошибках? Логи? Если не военная тайна, конечно :)Ну есть php скрипт, при mysql_connect() возвращает TRUE, т.е. с сервером соединяется, а при mysql_select_db() соединяется только с БД test, при попытке же соединится с остальными БД, возвращет FALSE. Вот и вся история собственно.. Все атрибуты у остальных БД те же что и у test.
>Ну есть php скрипт, при mysql_connect() возвращает TRUE, т.е. с сервером соединяется,
>а при mysql_select_db() соединяется только с БД test, при попытке же
>соединится с остальными БД, возвращет FALSE. Вот и вся история собственно..
>Все атрибуты у остальных БД те же что и у test.Давайте разбираться. Под атрибутами, я надеюсь, имеются в виду привилегии.
1. PHP и MySQL стоят на разных машинах или на одной? Возможно есть ошибки с привилегиями для хостов.
2. Проблема проявляется только при работе из PHP или из консольного клиента тоже?
3. Попробуйте подключиться к той же базе под MySQL'евским root'ом, если есть возможность. Получается?
4. Что видно в ответ на:
use mysql;
select * from db where User="ваш_пользователь" && Db="ваша_база"\G
>Давайте разбираться. Под атрибутами, я надеюсь, имеются в виду привилегии.Да
>1. PHP и MySQL стоят на разных машинах или на одной? Возможно
>есть ошибки с привилегиями для хостов.На одной
>2. Проблема проявляется только при работе из PHP или из консольного клиента
>тоже?Только на php, притом что БД создаются и видятся phpMyAdmin'ом... А остальными скриптами только test...
>3. Попробуйте подключиться к той же базе под MySQL'евским root'ом, если есть
>возможность. Получается?Тоже самое. Там стоит полный доступ для все пользователей.
>4. Что видно в ответ на:
>
>use mysql;
>select * from db where User="ваш_пользователь" && Db="ваша_база"\GПока нет возможности подползти к той машине :)
>>2. Проблема проявляется только при работе из PHP или из консольного клиента тоже?
>
>Только на php, притом что БД создаются и видятся phpMyAdmin'ом... А остальными скриптами только test...Хм... интересно. phpMyAdmin - это ведь такие же точно скрипты. Хотя смутно припоминаю похожую проблему, которая была у меня пару лет назад (когда я ещё пользовался phpMyAdmin'ом :). Попробую восстановить ту ситуацию - о результатах сообщу.
>>4. Что видно в ответ на:
>>
>>use mysql;
>>select * from db where User="ваш_пользователь" && Db="ваша_база"\G
>
>Пока нет возможности подползти к той машине :)На этот случай добрые люди придумали SSH и иже с ним :)
>Хм... интересно. phpMyAdmin - это ведь такие же точно скрипты.Да... вот я и думаю что странно это все...
>Хотя смутно
>припоминаю похожую проблему, которая была у меня пару лет назад (когда
>я ещё пользовался phpMyAdmin'ом :). Попробую восстановить ту ситуацию - о
>результатах сообщу.Ага.. спасибо.. а что phpMyAdmin не рулит?)
>>Пока нет возможности подползти к той машине :)
>
>На этот случай добрые люди придумали SSH и иже с ним :)Ну да.. но машина в локалке стоит, которую я увижу только завтра.
Что-то я затупил... Никак не могу спровоцировать ту старую ошибку. И так и сяк делаю - всё нормально работает. Ладно, пойдём другим путём. Для начала запустите у себя такой вот скриптик:<?php
header("Content-type: text/plain; charset=koi8-r");
if(!$mysql = mysql_connect("ваш_сервер", "root", "ваш_пароль")) {
echo mysql_errno() . ": " . mysql_error() . "\n";
exit("Can't connect");
}$query = "SHOW DATABASES";
echo "query: $query\n";
if (!$result = mysql_query($query)) {
echo mysql_errno() . ": " . mysql_error() . "\n";
exit("Can't show databases");
}$dbs = array();
while ($row = mysql_fetch_row($result)) {
echo "found database: " . $row[0] . "\n";
$dbs[] = $row[0];
}foreach ($dbs as $db) {
$query = "USE $db";
echo "query: $query\n";
if ($result = mysql_query($query)) {
echo "$db Ok\n";
$query = "SHOW TABLES";
echo "query: $query\n";
if ($result = mysql_query($query)) {
while ($row = mysql_fetch_row($result)) {
echo "found table: $db." . $row[0] . "\n";
}
} else {
echo mysql_errno() . ": " . mysql_error() . "\n";
echo "Can't show tables in $db\n";
}
} else {
echo mysql_errno() . ": " . mysql_error() . "\n";
echo "Can't use database $db\n";
}
}?>
Что выводит? Если всё худо, повторите те же запросы из консоли. Сравните результаты.
> а что phpMyAdmin не рулит?)
Рулит ещё как. И для начинающих он просто спасение. Но мне с некоторых пор (по мере изучения SQL вообще и MySQL в частности) стало тесновато в его рамках. Сейчас для технических нужд пользуюсь исключительно консольным клиентом.
> Ну да.. но машина в локалке стоит, которую я увижу только завтра.
Понятно