URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 3157
[ Назад ]

Исходное сообщение
"Не соединяется с другими БД"

Отправлено ch_IP , 15-Мрт-05 05:03 
Сабж, кроме базы данных, созданной при установке, которая называется test.  Права у всех баз одинаковые, но вот соединяется почему-то только с одной. В чем может быть проблема?

Содержание

Сообщения в этом обсуждении
"Не соединяется с другими БД"
Отправлено XAnder , 15-Мрт-05 08:43 
>Сабж, кроме базы данных, созданной при установке, которая называется test.
>Права у всех баз одинаковые, но вот соединяется почему-то только с одной.
>В чем может быть проблема?

Нельзя ли поподробнее - кто и с кем не соединяется? Сервер? Клиент? Сообщения об ошибках? Логи? Если не военная тайна, конечно :)


"Не соединяется с другими БД"
Отправлено ch_IP , 15-Мрт-05 17:30 
>Нельзя ли поподробнее - кто и с кем не соединяется? Сервер? Клиент?
>Сообщения об ошибках? Логи? Если не военная тайна, конечно :)

Ну есть php скрипт, при mysql_connect() возвращает TRUE, т.е. с сервером соединяется, а при mysql_select_db() соединяется только с БД test, при попытке же соединится с остальными БД, возвращет FALSE. Вот и вся история собственно.. Все атрибуты у остальных БД те же что и у test.



"Не соединяется с другими БД"
Отправлено XAnder , 16-Мрт-05 09:59 
>Ну есть 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


"Не соединяется с другими БД"
Отправлено ch_IP , 16-Мрт-05 11:53 
>Давайте разбираться. Под атрибутами, я надеюсь, имеются в виду привилегии.

Да

>1. PHP и MySQL стоят на разных машинах или на одной? Возможно
>есть ошибки с привилегиями для хостов.

На одной

>2. Проблема проявляется только при работе из PHP или из консольного клиента
>тоже?

Только на php, притом что БД создаются и видятся phpMyAdmin'ом... А остальными скриптами только test...

>3. Попробуйте подключиться к той же базе под MySQL'евским root'ом, если есть
>возможность. Получается?

Тоже самое. Там стоит полный доступ для все пользователей.

>4. Что видно в ответ на:
>
>use mysql;
>select * from db where User="ваш_пользователь" && Db="ваша_база"\G

Пока нет возможности подползти к той машине :)


"Не соединяется с другими БД"
Отправлено XAnder , 16-Мрт-05 15:37 
>>2. Проблема проявляется только при работе из PHP или из консольного клиента тоже?
>
>Только на php, притом что БД создаются и видятся phpMyAdmin'ом... А остальными скриптами только test...

Хм... интересно. phpMyAdmin - это ведь такие же точно скрипты. Хотя смутно припоминаю похожую проблему, которая была у меня пару лет назад (когда я ещё пользовался phpMyAdmin'ом :). Попробую восстановить ту ситуацию - о результатах сообщу.

>>4. Что видно в ответ на:
>>
>>use mysql;
>>select * from db where User="ваш_пользователь" && Db="ваша_база"\G
>
>Пока нет возможности подползти к той машине :)

На этот случай добрые люди придумали SSH и иже с ним :)


"Не соединяется с другими БД"
Отправлено ch_IP , 16-Мрт-05 17:24 
>Хм... интересно. phpMyAdmin - это ведь такие же точно скрипты.

Да... вот я и думаю что странно это все...

>Хотя смутно
>припоминаю похожую проблему, которая была у меня пару лет назад (когда
>я ещё пользовался phpMyAdmin'ом :). Попробую восстановить ту ситуацию - о
>результатах сообщу.

Ага.. спасибо.. а что phpMyAdmin не рулит?)

>>Пока нет возможности подползти к той машине :)
>
>На этот случай добрые люди придумали SSH и иже с ним :)

Ну да.. но машина в локалке стоит, которую я увижу только завтра.



"Не соединяется с другими БД"
Отправлено XAnder , 17-Мрт-05 09:29 
Что-то я затупил... Никак не могу спровоцировать ту старую ошибку. И так и сяк делаю - всё нормально работает. Ладно, пойдём другим путём. Для начала запустите у себя такой вот скриптик:

<?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 в частности) стало тесновато в его рамках. Сейчас для технических нужд пользуюсь исключительно консольным клиентом.

> Ну да.. но машина в локалке стоит, которую я увижу только завтра.

Понятно