MySQL 5.7--secure-file-priv問題

1725 ワード

(自分の愚かな過ちを記録したブログですが・・・後で犯すのを避ける)
の原因となる
先日、csvファイルからMySQLにデータをインポートする必要がありましたが、数分の仕事だと思っていましたが、結局何時間もやってやっと終わりました・・・
経過
  • 導入開始:LOAD DATA INFILE "xxx" INTO TABLE tbl FIELDS TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '
    '
    直接エラー:ERROR 1290(HY 000):The MySQL server is running with the–secure-file-priv option so it cannot execute this statement.SHOW GLOBAL VARIABLES LIKE '%secure_file%'を使って現在の構成のアップロードディレクトリを見て、windowsの下で普通はC:ProgramDataMySQLMySQL Server 5.7Uploadsでディレクトリを知って、私は喜んでロードするファイルをこのディレクトリの下に置いて、これで大丈夫だと思っていますか?結果......
  • 再エラー:ERROR 13(HY 000):Can’t get stat of‘xxx’(Errcode:2)perror 2コマンドで問い合わせると、エラーコード13の意味はNo such file or directoryであることがわかる.これはおかしいですね.ファイルがここにあるのに、なぜこのようなヒントがあるのでしょうか.MySQLのドキュメントを調べたところ、理由は以下の通りです.MySQL Load data If LOCAL is specified、the file is read by the client program on the client host and sent to the server.If LOCAL is not specified, the file must be located on the server host and is read directly by the server. つまり、LOCALが宣言された場合、MySQLはクライアントホストでこのファイルを探します.宣言がなければ、サービス側ホスト上で直接探します.個人的な理解では、MySQLはサービスとして、自分がserverです.だから宣言しないと、MySQLは自分が実行しているサーバーで直接ファイルを探します.それはもちろん見つからないでしょう.結局、ファイルは自機、つまりMySQLサーバーに対するクライアントにあります.だから、mysqlにログインするときにlocal権限を与える:mysql -uroot -p --local-infileインポート時にローカルファイルをインポートする:LOAD DATA LOCAL INFILE "xxx" INTO TABLE tbl FIELDS TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '
    '
  • まとめ
    資料を調べてみると、youxinが書いたMySQL:ERROR 13(HY 000):Can't get stat ofのような問題がある.LOCALキーワードを宣言しない場合、MySQLはFILE権限を必要としてファイルを読み取るため、Permission deniedが最終的に現れる.読者は具体的な問題に基づいて症状に応じて薬を処方することができる.