これは、UNIX/Linux ファイル システムのアクセス許可の問題です。
オペレーティング システムは、指定されたファイルへのアクセスを OS ユーザー権限で許可していません。
ファイルへのパス内のすべてのディレクトリに対する権限は、少なくとも読み取りと実行である必要があり、ファイル自体に対する権限は少なくとも読み取りである必要があります。
ファイルにアクセスしようとしている OS ユーザーは、MySQL Server プロセスが実行されている UNIX/Linux ユーザー アカウントです。(これは多くの場合「mysql」ですが、そうである必要はありません。実際には、MySQL がどのようにインストールおよびセットアップされたかによって異なります。
mysql サーバー ホストのシェル プロンプトから、次を実行します。
ps -ef | grep mysqld
出力には、mysqld を含む行が含まれているはずです。例えば:
mysql 2247 1233 0 Mar21 ? 00:24:09 /opt/mysql/bin/mysqld --basedir=/opt/...
出力の最初のフィールドは、MySQL サーバーが実行されている OS ユーザーを示しています。この場合、OS ユーザー「mysql」です。
「mysql」として OS にログインするか、「su - mysql」を実行してそのユーザーに切り替えると、そのファイルにアクセスしようとすると、同じ権限の問題が発生します。
/nfs/shared/implementation/ngma/CO-48812_NGMA_Load_email/exclude_emails.tsv
ファイルのパーミッションが OS ユーザー "mysql" によるファイルの読み取りを許可していないか、ファイルの上のディレクトリのパーミッションが OS ユーザー "mysql" による "read+execute" を許可していません。
ディレクトリとファイルのアクセス許可を適切に変更する必要があります。
厄介な回避策として、ファイルを /tmp にコピーします (シェル プロンプトから、ファイルに対する「読み取り」権限を持つ OS ユーザーとしてログインします)。/tmp ディレクトリでは、OS ユーザー "mysql" を含むすべてのユーザーが "read+execute" を許可する必要があります。
cp /nfs/shared/implementation/ngma/CO-48812_NGMA_Load_email/exclude_emails.tsv /tmp/
次に、ファイルのアクセス許可を変更して、OS ユーザー「mysql」がファイルを読み取れるようにすることができます。ファイルを誰でも読めるようにするには:
chmod ugo+r /tmp/exclude_emails.tsv
次に、MySQL サーバーに接続し、新しい /tmp/exclude_emails.tsv ファイルを参照する LOAD DATA を unning してみます。
もちろん、他のオプションは、元のファイルに適切にアクセス許可を設定することです (「mysql」ユーザー (または mysqld を実行している OS ユーザー) が必要なアクセス許可を持ち、パス内のすべてのディレクトリに.
要約すると、これは実際には MySQL サーバーの問題ではありません。これは、mysql OS ユーザーが実行しようとしているファイルへのアクセスを禁止するオペレーティング システムのアクセス許可の問題です。