как редактировать secure_file_priv используя MYSQL Docker контейнер - PullRequest
0 голосов
/ 15 января 2020

Я создал MySQL кластер узлов (2 узла данных, 1 узел управления и 1 MySQL серверный узел) на Docker Следуя инструкциям по этой ссылке:

https://mysqlmed.wordpress.com/2017/09/04/mysql-cluster-in-docker-quick-step-by-step

Затем я создал таблицу MySQL для импорта CSV-файла (с именем daily.csv) с помощью команды:

LOAD DATA INFILE 'C:/Users/Utilisateur/Desktop/daily.csv' INTO TABLE daily IGNORE 1 LINES;

и получил ошибку:

ОШИБКА 1290 (HY000): Сервер MySQL работает с параметром --secure-file-priv, поэтому он не может выполнить этот оператор.

Когда я добавляю LOAD DATA LOCAL INFILE ..

Я получаю эту ошибку:

ОШИБКА 2 (HY000): Файл 'C: / Users / Utilisateur / Desktop / daily.csv' не найден (Код ошибки: 2 - Нет такого файла или каталога)

Когда я проверяю свой secure-file-priv, используя команду:

SELECT @@global.secure_file_priv

Я получаю следующий путь: /var/lib/mysql-files/ но я понятия не имею, как получить к нему доступ, чтобы скопировать мой CSV-файл или даже получить доступ к my.ini MySQL файлу конфигурации, чтобы изменить переменную secure-file-priv на NULL, что, как я видел, является другим решением чтобы получить разрешения для доступа к моему файлу.

Поскольку я использую Docker, я понятия не имею, как получить доступ к файлу конфигурации контейнера MySQL.

Я пробовал много способов, но не вижу проблем. Не могли бы вы помочь мне с этим, я был бы очень рад, поскольку я потратил много времени, пытаясь это исправить ??

Я следовал этим инструкциям, но не знаю, где файл /etc/mysql/my.cnf, чтобы изменить переменную secure_file_priv до NULL:

Mysql с параметром --secure-file-priv равным NULL

1 Ответ

0 голосов
/ 15 января 2020

В вашем случае может быть достаточно смонтировать локальный каталог внутри каталога, ожидаемого mysql (/var/lib/mysql-files/).

Попробуйте запустить контейнер с дополнительным параметром -v, например так:

docker run -d -v C:/Users/Utilisateur/Desktop/:/var/lib/mysql-files --net=cluster --name=mysql1 --ip=192.168.0.10 -e MYSQL_RANDOM_ROOT_PASSWORD=true mysql/mysql-cluster mysqld

Или скопируйте файл в папку:

docker cp C:/Users/Utilisateur/Desktop/daily.csv mysql1:/var/lib/mysql-files

при условии, что имя вашего контейнера равно mysql1, как и в указанной вами ссылке.

...