2013-11-17 2 views
0

Вот мой (фиктивный) запрос, который отлично работает на машине, где размещается mysql-сервер, но сбой на другой машине, когда я подключаюсь к тому же пользователю. (Корень)MySql 'INTO OUTFILE' из командной строки MySql

SELECT * 
FROM data 
INTO OUTFILE '/tmp/dump.csv' 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n'; 

Ошибка лажу MySQL> подскажите:

ERROR 1045 (28000): Access denied for user 'root'@'foobar.com' (using password: YES) 

Я получил "ВСЕ ЛЬГОТЫ" к 'корню' @ '%'

я упускаю что-то?

Добавление еще некоторые данные:

  1. После запроса работает нормально, это означает, что пользователь подключен к правой базе данных и разрешение на чтение по меньшей мере.

    SELECT * ИЗ Предела данных 5;

  2. Я сделал привилегии на стороне сервера FLUSH;
    Сколько времени я должен ждать? Любой номер шара? Я сомневаюсь, что это будет длиннее нескольких минут.

+0

Нужно ли вам звонить «привилегии флеша»? – ethrbunny

+0

Ваш выходной файл уже существует? Я не думаю, что он перезапишет его. – iouri

ответ

0

Убедитесь, что вы создали учетную запись 'root'@'foobar.com' на сервере. Вы можете проверить это следующим образом:

use information_schema; 
select user, host from user; 

mysql> select user, host from user; 
+------+-----------+ 
| user | host  | 
+------+-----------+ 
| root | 127.0.0.1 | 
| root | ::1  | 
| root | localhost | 
+------+-----------+ 
3 rows in set (0.00 sec) 

Вы также можете иметь проблемы смешивания диких пользователей карт (%) и пользователей с явным хозяином, если оба матча MySQL должен запретить доступ.

+0

1. У mysql, похоже, нет таблицы «user» в разделе information_schema. 2. Также я дал разрешение использовать GRANT ALL ... 'root' @ '%', который должен был включать все разрешения. 3. Я могу выполнить запрос 'select * from tbl', у меня проблема только в запросе, связанном с операцией вывода FILE. –

0

После просмотра номера ошибки ERROR 1045 (28000) следующие возможные причины, по которым вы получаете эту ошибку. Предполагая, что user здесь пользователь MySQL, но не Linux/Windows пользователь машины

  1. Вы пытаетесь подключиться к другому/IP порт TCP, из которого прослушивает сервер. Используйте параметр --port, чтобы исправить это.
  2. Проверьте конфигурацию сервера, разрешено ли подключение к сети, если вы пытаетесь подключиться с удаленного компьютера. Проверьте --skip-networking параметр в конфигурационном файле
  3. Если bind-address=127.0.0.1 то MySQL сервер будет слушать только локальные связи и не будет слушать удаленных соединений
  4. Может быть брандмауэр блокирует соединение. Чтобы проверить это Telnet или ssh на сервер с удаленного компьютера. Как показано ниже.

    $telnet 192.168.1.1 3306

  5. В приведенном выше запросе вы пытаетесь написать CSV файл из запроса. Убедитесь, что у вас есть соответствующие права пользователя для записи файла.

  6. Как вы уже сказали, вы уже сделали FLUSH PREVILEGES. Попробуйте использовать mysqladmin flush-previleges из корневого запроса для вашего компьютера.

Я дал некоторые идеи для отладки вашей проблемы. Вероятно, выше решения помогут вам в решении вашей проблемы. Cheers

+0

, когда вместо операции с файлом я выбираю только выбор * из tbl limit 5; , работает просто отлично, что означает отсутствие возможности подключения или чтения. Также пользователь, выполняющий запрос, имеет право на чтение/запись в/tmp. (не имея такого разрешения, дало бы другую ошибку). –

Смежные вопросы