Я новый MySQL пользователь, пытающийся следовать вводному руководству из Oracle.
Мне не удалось загрузить данные в таблицу из текстового файла ( этот шаг руководства ).
Когда я запускаю эту строку (где <path>
- это путь к файлу):
LOAD DATA LOCAL INFILE "<path>/blob.txt" INTO TABLE blob;
, я получаю сообщение об ошибке:
ERROR 2068 (HY000): LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.
Я пробовал:
- Поместив
blob.txt
в каталог /usr/local/mysql-8.0.21-macos10.15-x86_64/data
и используя полный путь. Я использовал этот каталог, потому что переменная datadir
равна /usr/local/mysql/data
. - Размещение
blob.txt
в вышеупомянутом каталоге и использование только имени файла вместо полного пути. - Использование, а не с использованием
LOCAL
- Настройка
secure-file-priv=''
путем создания ~/.my.cn
как описано здесь . - Настройка
local-infile=1
. - Предоставление
FILE
разрешение. - На основании одного комментария crypti c к другому вопросу , я попытался изменить права доступа к файлам. Я
chmod 777
отредактировал файл и его родительский каталог. Но, возможно, это нужно изменить для всех родительских каталогов в дереве, что делает это недопустимым решением?
Вот где это становится очень странным:
LOAD DATA LOCAL INFILE "blerga blerga blerga bloo" INTO TABLE blob;
возвращает точно такую же ошибку . То есть, похоже, неважно, какой путь я туда выбрал. Даже не имеет значения, реальный ли это путь к реальному файлу.
После нескольких часов возни я смог найти одну вещь, которая сработала: размещение файлов внутри папки, содержащей таблицы моей базы данных:
/usr/local/mysql-8.0.21-macos10.15-x86_64/data/dining/blob.txt
(Dining - это имя базы данных.) Затем загрузка данных работает нормально.
Итак Я остаюсь с вопросом:
- Действительно ли это «правильный» способ сделать это? Безопасно ли возиться внутри этого каталога?
- Я предполагаю, что вся эта проблема возникла из-за проблем с правами доступа к файлам. Это правильно? Я этого не совсем понимаю. Это что-то вроде: серверу нужен доступ к файлам на стороне клиента (оба находятся на моем компьютере)?
- Есть ли «правильный» способ сделать возможной загрузку файлов из других мест в моем компьютер в стол? И если да, то есть ли плохие последствия для безопасности, если сделать это «в реальной жизни» - с реальными серверами и клиентами? на inte rnet, за исключением того одинокого комментария, приведенного выше. На веб-сайте Oracle есть краткий список кода ошибки, но я не нашел ни одного комментария github об этом коде ошибки.