データロード時の MySQL の「コマンドは許可されていません」エラーを解決する
LOAD DATA LOCAL
の使用中に MySQL エラー「エラー 1148: 使用されたコマンドはこの MySQL バージョンでは許可されません」が発生する場合は、LOCAL
キーワードが無効になっていることを意味します。これはセキュリティ対策です。 データをローカルにロードするには、local-infile
オプションを明示的に有効にする必要があります。
クライアント側のソリューション:
最も簡単な解決策は、MySQL サーバーに接続するときに local-infile
を有効にすることです。
<code class="language-bash">mysql -u myuser -p --local-infile mydatabase</code>
myuser
を MySQL ユーザー名に置き換えます。-p
はパスワードの入力を求められ、mydatabase
はデータベースの名前に置き換えます。
重要なセキュリティ上の注意: local-infile
を有効にすると、セキュリティ上の脆弱性が生じます。絶対に必要な場合にのみ有効にし、その後は無効にしてください。
サーバー側の解決策 (より永続的ですが、注意が必要です):
より永続的な解決策として、MySQL サーバー自体で local-infile
を有効にします。 これには、MySQL 構成ファイル (Linux/macOS では my.cnf
、Windows では my.ini
) を変更する必要があります。 サーバー構成ファイルを変更する場合は、細心の注意を払ってください。 変更を誤ると、サーバーのセキュリティが危険にさらされる可能性があります。
my.cnf
ファイルに次の行を追加または変更します:
<code>loose-local-infile = 1</code>
次に、変更を有効にするために MySQL サーバーを再起動します。 データのロードが完了したら、セキュリティ リスクを軽減するために loose-local-infile
を 0 に戻すか、行を削除することを強くお勧めします。
代替アプローチ (推奨):
最も安全で一般的に推奨される方法は、 を完全に避けることです。代わりに、クライアントのローカル ファイル システムから直接データをロードしない方法を使用してください。 これには以下が関係する可能性があります:LOAD DATA LOCAL
mysqlimport
このコマンドライン ツールは、ファイルからデータをインポートするためのより安全な代替手段です。
scp
、またはその他の安全なファイル転送方法を使用してデータ ファイルをサーバーにアップロードし、次に sftp
( キーワード) を使用して、サーバーのファイル システムからデータをロードします。LOAD DATA INFILE
LOCAL
以上がLoad Data Localを使用するときに「MySQLバージョンでは許可されていないコマンド」エラーを修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。