質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.99%

mysql(MariaDB)にまつわる四つの疑問

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 5
  • VIEW 1,235

aaaaaaaa

score 479

mysql( 10.1.30-MariaDB)をインストールすると、

+-----------+------+-------------------------------------------+----------+
| host      | user | password                                  | ssl_type |
+-----------+------+-------------------------------------------+----------+
| localhost | root |                                           |          |
| 127.0.0.1 | root |                                           |          |
| ::1       | root |                                      |          |
| localhost |      |                                           |          |
| localhost | pma  |                                           |          |
+-----------+------+-------------------------------------------+----------+


という五つのユーザーがあります。

ここで質問があります。

1.userがrootでhostが、自分を意味するlocalhost、127.0.0.1、::1がありますが、なぜ三つあるのでしょうか。

2.mysql -u root -p **と入力するとこの三つのうち恐らくhostがlocalhostのものに接続しますが、127.0.0.1や::1に接続する際は、 mysql -h 127.0.0.1 -u root -p **やmysql -h ::1 -u root -p ****とすると接続できますか。
それぞれ三つのアカウントに接続したうえでselect current_user()をしても

MariaDB [(none)]> select current_user();
+----------------+
| current_user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)


としか返ってこなかったので恐らくどうやってもlocalhostにしか接続できていないと思うのです。てっきりroot@127.0.0.1、root@::1になるのかと思ったのですが、なぜならないのでしょうか。
というかどうするとこれらのhostに接続できますか。

3.::1は、ipv6を利用している方のためのものだとは思うのですが、そのipv6を利用している場合は、hostがlocalhost、127.0.0.1では接続できないということなのでしょうか。

4. userがpmaになっているやつは、rootと違い権限が制限されているものですが、このpmaは何の略ですか。

>>基本はlocalhostで具体的なipアドレスは保険でしょう
hostがlocalhostで接続しているときに何かしらの問題が発生することがあるのだと思うのですが、どのような問題が発生しますか。

>>冗長に設定をかいておけばサーバー側が最適なものを選択するので、サーバーの判断に任せて下さい
すみません、この部分がよくわかりませんが、my.iniあたりの設定ファイルに冗長な設定を記述するとlocalhost以外で接続できるようになるということでしょうか。

※横線が入っている部分は、解決済み

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+7

なぜ三つ

IPv4とIPv6の設定を併記しているからです
基本はlocalhostで具体的なipアドレスは保険でしょう

てっきりroot@127.0.0.1、root@::1になる

冗長に設定をかいておけばサーバー側が最適なものを選択するので、サーバーの判断に任せて下さい

ipv6を利用している場合は、hostがlocalhost、127.0.0.1では接続できない

IPv4を完全に排除しているなら127.0.0.1では接続できないかもしれませんね

pmaは何の略

おそらくphpMyAdminの略です

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/02 19:21

    ご回答ありがとうございます。

    >>保険
    ということは、hostがlocalhostで接続しているときに何かしらの問題が発生することがあるのだと思うのですが、どのような問題が発生しますか。
    localhostも127.0.0.1も::1同じPCからの接続を意味していると思うので、localhostに何かしらの問題が発生したら127.0.0.1も::1も影響を受けないのでしょうか。

    >>冗長に設定をかいておけばサーバー側が最適なものを選択するので、サーバーの判断に任せて下さい
    すみません、この部分がよくわかりませんが、mysql.cnfあたりの設定ファイルに長めの設定を記述するとlocalhost以外で接続できるようになるということでしょうか。

    キャンセル

  • 2018/03/02 20:42 編集

    > localhostに何かしらの問題が発生したら127.0.0.1も::1も影響を受けない

    いや、意味が違います。
    localhostの名前の解決でhostsなどが参照できなくても(壊れても?)
    直に127.0.0.1のループバックが書かれていれば
    そちらでアクセスできるということです
    localhost=127.0.0.1or::1なのですから、両方で設定をしておけばどちらかが通らなくても
    もう片方で通る可能性が高いという意味です

    キャンセル

  • 2018/03/21 08:26

    老婆心ながら、aaaaaaaa さんへ。冗長というのは単に長いという意味ではありませんよ。
    国語本来の意味は「文章などにムダがあって長ったらしいこと」という意味ですが。
    yambejp さんのおっしゃるように、二重三重の定義をしておくことによってなんらかの障害があったときの手段を用意するという意味もあります。
    参考までに
    https://ja.wikipedia.org/wiki/%E5%86%97%E9%95%B7%E5%8C%96
    https://www.nttpc.co.jp/yougo/%E5%86%97%E9%95%B7.html

    キャンセル

0

 user   host        command                      接続 
 root   127.0.0.1   mysql -h 127.0.0.1 -u root   内部 
 root   ::1         mysql -h ::1       -u root   内部 
 root   localhost   mysql              -u root   内部 
 root   localhost   mysql -h localhost -u root   内部 
 root   %           mysql -h 10.0.11.2 -u root   外部 

で接続をわけれたはず(うろ覚え)

pma  は PhpMyAdmin Managed Account

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/22 19:44

    ご回答ありがとうございました。
    ::1、127.0,0.1などに接続した後、select current_user();やshow processlist;としてもroot@localhostと返ってくるのですが、hostが127.0.0.1や::1なのにもかかわらず
    root@127.0.0.1やroot@::1とならないのは、なぜなのでしょうか。

    また同様にhostが127.0.0.1や::1に接続しているときにhostがlocalhostではないことを示すにはどうすればよいのでしょうか。

    キャンセル

  • 2018/03/22 20:01

    記述の通り(うろ覚えですよ)
    いまだと古いバージョンのMySQLでの実行のですけどね

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.99%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る