MySQLクエリ結果のエクスポートの問題解決:エラー1(HY000):ファイルを作成/書き込みできません



Mysql Query Result Export Problem Solving



オリジナル:https://blog.csdn.net/duxu24/article/details/53669697

タスク:MySQLデータからローカルにデータをエクスポートします-mytableから「 n」で終了する行を「/home/spark/data.csv」で終了するフィールドに*を選択します
エラーメッセージ:エラー1(HY000):ファイル '/home/spark/data.csv'を作成/書き込みできません(エラーコード:2-そのようなファイルまたはディレクトリはありません)
原因:Ubuntuのバージョンにより、一部のバージョンでは、デフォルトでMySQLエクスポートファイルがMySQLのデータベースファイル(datadir)以外のパスに制限されています。つまり、デフォルトでは、指定したデータベースファイルにのみエクスポートできます。
指定されたデータベースファイルパスコマンドを表示します。



#MySQLを入力してください

mysql> show variables like 'datadir' +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | datadir | /var/lib/mysql/ | +---------------+-----------------+ 1 row in set (0.00 sec)


Ubuntuのバージョンに上記の必須の制限があるかどうかを確認します。



$ sudo aa-status apparmor module is loaded. 23 profiles are loaded. 23 profiles are in enforce mode. /sbin/dhclient /usr/bin/evince /usr/bin/evince-previewer /usr/bin/evince-previewer//sanitized_helper /usr/bin/evince-thumbnailer /usr/bin/evince-thumbnailer//sanitized_helper /usr/bin/evince//sanitized_helper /usr/bin/ubuntu-core-launcher /usr/lib/NetworkManager/nm-dhcp-client.action /usr/lib/NetworkManager/nm-dhcp-helper /usr/lib/connman/scripts/dhclient-script /usr/lib/cups/backend/cups-pdf /usr/lib/telepathy/mission-control-5 /usr/lib/telepathy/telepathy-* /usr/lib/telepathy/telepathy-*//pxgsettings /usr/lib/telepathy/telepathy-*//sanitized_helper /usr/lib/telepathy/telepathy-ofono /usr/sbin/cups-browsed /usr/sbin/cupsd /usr/sbin/cupsd//third_party /usr/sbin/ippusbxd /usr/sbin/mysqld #If this option is present, there is a default mandatory limit for this version. /usr/sbin/tcpdump 0 profiles are in complain mode. 8 processes have profiles defined. 8 processes are in enforce mode. /sbin/dhclient (948) /usr/lib/telepathy/mission-control-5 (1633) /usr/sbin/cups-browsed (845) /usr/sbin/cupsd (4588) /usr/sbin/cupsd (4590) /usr/sbin/cupsd (4591) /usr/sbin/cupsd (4592) /usr/sbin/mysqld (916) 0 processes are in complain mode. 0 processes are unconfined but have a profile defined.


解決策:ファイル/etc/apparmor.d/usr.sbin.mysqldを変更します

# $ sudo vim /etc/apparmor.d/usr.sbin.mysqld #Add the following to /usr/sbin/mysqld {} /home/spark/ r, /home/spark/** rwk, # MySQL, reload the file $ sudo /etc/init.d/apparmor reload [ ok ] Reloading apparmor configuration (via systemctl): apparmor.service.

もちろん、私の解決策は元のブロガーよりも単純で失礼です。必要なファイルをMySQLデータベースファイル(datadir)に直接エクスポートします。データベースはオンラインで使用できるため、再起動するのに不便であり、datadirにエクスポートされます。その下に影響はありません。