>結局「MySQLのユーザー」は自動的に「Linuxのユーザー」になっているということですか。
うまく伝わらないのがもどかしいですが
仮にlinuxのユーザーがaaa,bbb,cccとありその他rootがいるとします
またmysqlのユーザーがaaa,xxx,yyyとありその他rootがいるとします
(1)linuxのユーザーはmysqlのユーザーと全く別物
linuxにあるbbb,cccはmysqlのユーザーとしては存在しません
またmysqlにあるxxx,yyyはlinuxのユーザーとして存在しません
たまたまaaaという同じ名前がある場合もあるし、rootのように
管理者を明示するようなある程度定型なユーザーも存在します。
(2)linuxに存在しないユーザーでもmysqlにログインできる
かりにaaaさんがxxxでmysqlにログインすることはできるし
同様にaaaさんがrootとしてログインすることもできます
もちろんaaaさんがaaaとしてログインすることもできます
とうぜんlinux上のrootが、yyyという一般ユーザーでログインすることもできます
繰り返しになりますがlinuxのユーザーはmysqlにとって直接意味はありません。
(3)プログラムは特定のlinuxユーザー権限で動いている
mysqld(サーバー)は起動時のオプションの指定で
特定の権限で動くことになります。
もっとつっこんで言えばすべてのlinuxのプログラムは「誰か」の権限で
動いています。
理論上mysqldをlinuxのroot権限で動作させることは可能ですが、
セキュリティ上の問題で万が一mysqldがセキュリティホールを利用して乗っ取られた
ときに、root権限で動いていればlinuxシステムに対してroot権限をもつことができ
システム全体が乗っ取られる危険があります。
したがってmysqldは「mysql」という特別なユーザー(この場合の特別とは
特別に権限を制限された・・・という意味に近い)によって実行されるわけです
(4)サーバーの実行権限者がlinuxファイルシステムへの実行権限者になる
仮に自分がlinuxのrootで、rootとしてmysqlにログインしたとしても
outfileする際に発揮できるのはサーバーが実行されている「mysql」という
(限定された)ユーザーの権限でしかありません。
mysqlにログインしているのは「クライアント」としてログインしているにすぎず
mysqldは常に「自分はmysql権限でしかうごかないよ」と認識しているからです
結論としてselect * from テーブル into outfile "/tmp/test.txt";
でファイル出力する場合、そのファイルの所有者はmysqlでしかなく
ls -la /tmp/test.txtとすると、mysql所有であることが確認できます
私の説明の仕方もわるく、うまく理解してもらえないのは申し訳ないですが
一度linuxの入門書から読み始めて最低限linuxがどうやって動いているか
学習されることをお勧めします
補足
「mysql」というのは「MySQL」インストール時に作られた「mysqld」を動作させる権限を持ったLinuxの1ユーザー。 「MySQLのユーザー」とは「mysqlクライアント」にログインする権限を持った「MySQL内のユーザー」ということですかね。 チョッと分かったような気が、、、