SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 19.08.2013 10:36:53

Helix
Участник
Зарегистрирован: 19.08.2013
Сообщений: 5

Работа одновременно с 2мя БД

Есть задача скопировать таблицу из БД1 в БД2. БД находятся на разных хостах.
Для начала копирую стуктуру.
Написал PHP скрипт:

$link = mysql_connect("host1.ru", "user1", "pass1") or die ("Невозможно подключиться к MySQL1");
$link2 = mysql_connect("host2.ru", "user2", "pass2") or die ("Невозможно подключиться к MySQL2");
mysql_query('CREATE TABLE base2.table LIKE base1.table') or die(mysql_error());

который выполнил на host2.ru и получил ошибку:

SELECT command denied to user 'user2'@'host2.ru' for table 'table'

Подскажите причем здесь SELECT и в чем вообще ошибка?

Неактивен

 

#2 19.08.2013 11:57:29

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Работа одновременно с 2мя БД

Чтобы выполнить команду "CREATE TABLE base2.table LIKE base1.table" нужно прочитать (SELECT) структуру таблицы base1.table, а прав на это у пользователя  'user2'@'host2.ru' нет. О чем и сообщает вам ошибка.

Неактивен

 

#3 19.08.2013 12:01:07

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Работа одновременно с 2мя БД

Вообще стоит указывать в mysql_query, какой идентификатор подключения используете, раз уж их тут 2 на разные сервера.
mysql_query('CREATE TABLE base2.table LIKE base1.table')
стоит заменить на
mysql_query('CREATE TABLE base2.table LIKE base1.table',$link1)

Подозреваю, что пользователь user2 не имеет прав на работу с БД1, а права хотя бы на SELECT ему обязательно нужны для этого LIKE-запроса. Чему будет равно $test_link после

$test_link = mysql_connect("host1.ru", "user2", "pass2");

?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#4 19.08.2013 13:43:50

Helix
Участник
Зарегистрирован: 19.08.2013
Сообщений: 5

Re: Работа одновременно с 2мя БД

deadka написал:

Вообще стоит указывать в mysql_query, какой идентификатор подключения используете, раз уж их тут 2 на разные сервера.
mysql_query('CREATE TABLE base2.table LIKE base1.table')
стоит заменить на
mysql_query('CREATE TABLE base2.table LIKE base1.table',$link1)

А почему именно $link1, а не $link2? Запросом же работаем сразу с 2мя базами.

deadka написал:

Подозреваю, что пользователь user2 не имеет прав на работу с БД1, а права хотя бы на SELECT ему обязательно нужны для этого LIKE-запроса. Чему будет равно $test_link после

$test_link = mysql_connect("host1.ru", "user2", "pass2");

?

Естественно пользователь user2 не имеет прав на работу с БД1
user2 имеет права только для БД2, а user1 для БД1
Т.к. базы на разных хостингах, то и параметры доступа к ним различны.
Разве описанный запрос не может для каждой базы использовать "свои" доступы?

Отредактированно Helix (19.08.2013 13:50:31)

Неактивен

 

#5 19.08.2013 13:48:18

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Работа одновременно с 2мя БД

Helix написал:

Естественно пользователь user2 не имеет прав на работу с БД1
user2 имеет права только для БД2, а user1 для БД1

Для выполнения Вашего запроса user2 должен иметь права на чтение на базу БД1, то есть он должен иметь возможность подключиться к обоим серверам.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#6 19.08.2013 14:01:34

Helix
Участник
Зарегистрирован: 19.08.2013
Сообщений: 5

Re: Работа одновременно с 2мя БД

deadka написал:

Helix написал:

Естественно пользователь user2 не имеет прав на работу с БД1
user2 имеет права только для БД2, а user1 для БД1

Для выполнения Вашего запроса user2 должен иметь права на чтение на базу БД1, то есть он должен иметь возможность подключиться к обоим серверам.

А что делать если user2 нельзя установить права доступа на БД1? Создавать структуру вручную, а потом уже не одним запросом типа
INSERT INTO base2.table SELECT * FROM base1.table;
а скриптом полностью парсить таблицу в БД1 и построчно вставлять в БД2? Я надеялся избежать такого гемороя...

Отредактированно Helix (19.08.2013 14:02:05)

Неактивен

 

#7 19.08.2013 14:21:12

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Работа одновременно с 2мя БД

Если не можете дать права на БД1 пользователю, который user2, то видимо так.
mysqldump Вам в помощь.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#8 19.08.2013 14:35:55

Helix
Участник
Зарегистрирован: 19.08.2013
Сообщений: 5

Re: Работа одновременно с 2мя БД

Большое спасибо за ответы

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson