前提・実現したいこと
現在Railsにてアプリケーションを作成しており、
EC2を用いてデプロイまで完了しております。
そこで、CSVファイルを用いてデータのインポートを試みているのですが、
エラーにより進めずにおります。
なお本番環境において、データベースはMysql8
を使用しております。
どなたか要因お分かりの方アドバイスをいただけますと幸いです。
該当のソースコード
[ec2-user@ip-172-31-36-245 git_toreka]$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 93 Server version: 8.0.22 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SET GLOBAL local_infile=on; Query OK, 0 rows affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | git_toreka | | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec) mysql> use git_toreka; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +----------------------------+ | Tables_in_git_toreka | +----------------------------+ | active_storage_attachments | | active_storage_blobs | | advicediaries | | advicemenus | | ar_internal_metadata | | cards | | fooddates | | fooddiaries | | howtovideos | | idealweights | | inquiries | | schema_migrations | | useradvices | | users | | weightchanges | | withdrawals | | workoutdates | | workoutdiaries | | workoutstocks | +----------------------------+ 19 rows in set (0.00 sec) mysql> SHOW columns FROM advicemenus; +--------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+---------+----------------+ | id | bigint | NO | PRI | NULL | auto_increment | | menu | varchar(255) | YES | | NULL | | | minimam_reps | int | YES | | NULL | | | max_reps | int | YES | | NULL | | | sets | int | YES | | NULL | | | group | varchar(255) | YES | | NULL | | | created_at | datetime | NO | | NULL | | | updated_at | datetime | NO | | NULL | | | url | text | YES | | NULL | | +--------------+--------------+------+-----+---------+----------------+ 9 rows in set (0.00 sec) mysql> load data local infile "/home/ec2-user/environment/toreka/advicemenudb.csv" into table advicemenus fields terminated by ','; ERROR 2068 (HY000): LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.
試したこと
こちらのサイトを参考にさせていただきながらMysql8ならではの設定をいくつかしました。
①サーバー側の「--local_infile」を設定する。
mysql> select @@local_infile; +----------------+ | @@local_infile | +----------------+ | 0 | +----------------+ 1 row in set (0.00 sec) mysql> set persist local_infile=1; Query OK, 0 rows affected (0.00 sec) mysql> select @@local_infile; +----------------+ | @@local_infile | +----------------+ | 1 | +----------------+ 1 row in set (0.00 sec)
②LOAD DATA LOCAL INFILEを有効にする
Mysql8から上記がデフォルトで無効となってるとのことで有効にしました。
mysql> show global variables like 'local_infile'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | local_infile | ON | +---------------+-------+ 1 row in set (0.04 sec)
これら試してみましたが、依然下記のエラー分は出ております。
ERROR 2068 (HY000): LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.
ちなみに、本番環境におけるMysqlのバージョンは8.0.22
で、
開発環境におけるバージョンは5.5.62
となっております。
開発環境では問題なくCSVファイルからインポートができています。
なおインポートするファイルは、
"/home/ec2-user/environment/toreka/advicemenudb.csv"
においてあります。
宜しくお願いします。
補足情報(FW/ツールのバージョンなど)
Rails 5.2.5
ruby 2.5.1
あなたの回答
tips
プレビュー