No.7ベストアンサー
- 回答日時:
>結局「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内のユーザー」ということですかね。
チョッと分かったような気が、、、
No.6
- 回答日時:
>勉強中なので全てrootで実行してるんです。
常識的にrootでの作業はやめた方がいいですが、
別に自分がrootだろうがなんだろうが、まっとうにインストールしていれば
mysqldはmysql権限で動いているはずです。
>psでやってみたら確かにmysqlが見受けられました。
>mysqlの権限はどうやって調べたらいいんでしょうか?
だからtopコマンドだって・・・
psだったら
# ps axguw |grep mysqld
などで確認してみれば行の先頭が実行ユーザーです。
>MySQLからLinux側を操作しようとすると必ずユーザーmysqlなんですか?
原則アプリを実行しているユーザーがlinux側のユーザーになります。
なのでmysqldがmysqlで実行されている限り、linuxへの書き込みは
mysqlで実行されるはずです。
/tmpにファイルが落ちているなら、
# ls -la /tmp
でファイルのパーミッションを確認すればよいでしょう。
いずれにしてもmysqlがlinuxのroot権限で動かすことはほぼないので
覚える必要はないです。
(前述したとおりmysqlにrootとしてログインするのとは話の次元が違います)
この回答への補足
すみません不勉強なもので、怒らないでください。
なんとなく分かってきました。
結局「MySQLのユーザー」は自動的に「Linuxのユーザー」になっているということですか。
/etc/passwdに書かれているものね。
select Host, User, Password from mysql.user;で見てもユーザーとしてmysqlが表示されないのはなんででしょうか。
No.5
- 回答日時:
>「mysql」というユーザーがあるんですか?
手っ取り早くはtopコマンドで確認してみてください
(psでもok)
mysqldコマンドがユーザーmysql権限で動いていることがわかります
OSやインストールの仕方によっては別ユーザーが実行している可能性もありますが
きょうびデーモンをrootが実行することはまれでしょう。
デーモンの実行はrootの乗っ取りを防止するために
専用のユーザーで動作することが一般的です
この回答への補足
勉強中なので全てrootで実行してるんです。
psでやってみたら確かにmysqlが見受けられました。
mysqlの権限はどうやって調べたらいいんでしょうか?
MySQLからLinux側を操作しようとすると必ずユーザーmysqlなんですか?
LinuxもMySQLも経験が浅いもので戸惑うことばかりです。
No.4
- 回答日時:
>outfileを作ることはできないから、別のプログラムやアプリケーションで作れ
以下3つが一般的ですね
(1)書けるところに書く
ユーザーmysqlが書き込めるところに書く、よくあるのは/tmpに出力し、
必要があればシステム側のユーザーが/tmpから任意のフォルダにコピー・移動する
(2)プログラムから得る
phpやperlなどでSQLを発行して結果を得る、プログラムで得た結果はそのプログラムが
書き込めるフォルダがあるのでそこに書きだす
(3)アプリから得る
phpMyAdminなどで実行し、結果を表示する。必要ならファイルとしてダウンロードする。
またはODBC的なアプローチで、エクセルやアクセスで結果をえる
この回答への補足
/tmp/testfile.txtに出力するようにしたらできました。
(2)(3)については以前からやってます。
「mysql」というユーザーがあるんですか?
No.3
- 回答日時:
>outfileを作る権限がない
考え方を整理した方がいいです。
(1)mysqlのデーモンはユーザー「mysql」権限で実行されています
(2)outfileするのはmysqlの実行ユーザーなのでmysqlがlinuxのファイルI/Oの
権限がなければ書き出しができません
(3)その他にmysql自体にユーザー管理の考え方があり、mysqlにクライアントとして
ログインする際にユーザーを指定する。
仮にlinuxのrootがmysqlの一般ユーザーでログインすることもできるし、
linuxの一般ユーザーがmysqlのrootでログインすることもできる。
(4)mysqlのスーパーユーザー(おもにroot)が全権限を持ち、接続元やテーブルごとに
細かくユーザー設定ができます
(5)例外的にセーフモードでmysqlをlinuxのrootで動かすことがあります。
結論
→linuxのrootとmysqlのrootは別物、その他たまたま同じ名前であっても
linuxのユーザーとmysqlのユーザーは別物。
→outfileするケースはあまりなく、なにかプログラムやアプリケーションで
結果をえればよい
この回答への補足
つまり「outfileを作ることはできないから、別のプログラムやアプリケーションで作れ」ということでしょうか?
PCのコマンドプロンプトから「PCにあるMySQL」に対してはできたんですが....ダメですかねぇ
No.2
- 回答日時:
Linuxのディストリビューションによって関連するように設定している場合があるかもしれませんが、基本的に両者は関係ありません。
それぞれ別個にアカウントを作成する必要がありますし、例えばMySQLとLinuxに共にtestuserというアカウントがあったとしても両者は完全にベツモノです。この回答への補足
ありがとうございます。
別個なんですね。
実は、「select * from testtable into outfile "/root/testfile.txt" fields terminated by "," lines terminated by "\r\n";」などとエクスポートしようとしたら、「outfileを作る権限がない」というような意味のエラーがでるんです。Linuxでリモートsshからrootでログインし、rootでMySQLに入ってます。「root」ユーザーがどちらにもあります。
どうしてなんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LinuxユーザーとMySQLユーザの関係
-
接続ができません
-
mysqlがインストールされている...
-
MySQLカラム名は日本語と英数字...
-
postgreSQLのデータ型
-
show warningsのファイル出力方...
-
プライマリーキーの昇順でソー...
-
RPMのmysqlとmysql-serverの違い
-
VBAで変数内に保持された二次配...
-
SQL開発環境ソフトウェアである...
-
エクセルで連勤チェックをした...
-
列数が多いと結果が行単位に改...
-
ODP.NETのバージョン確認
-
like句を使って日本語を検索す...
-
Usage: \\.<filename> | sourc...
-
ERROR 1045 (28000) (using pas...
-
コメントが消えてしまいます
-
MYSQLサービス停止時にWindows...
-
MySQLのfield数の上限について
-
「・」中点が入った文字列を条...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
参考書に従って入力したつもり...
-
LinuxユーザーとMySQLユーザの関係
-
SSHでのmysqldumpができません
-
MySQL の安全な再起動とコネク...
-
LinuxのMySQLのrootパスワード...
-
Oracleで言う所のset head offなど
-
突然MySQLへアクセス出来なくな...
-
select * outfileがうまくいき...
-
コマンドプロンプトに表示させ...
-
Mysqlでmysql -u root -p -bが...
-
MySQLにおいてバッチ処理...
-
起動シェルの置き場所によって...
-
MySQは大文字小文字は関係ない ...
-
接続ができません
-
ODP.NETのバージョン確認
-
副問合せにLIKE文を使う方法は...
-
SQLのVARCHARとVARCHAR2の違い
-
MySQLカラム名は日本語と英数字...
-
like句を使って日本語を検索す...
-
プライマリーキーの昇順でソー...
おすすめ情報