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

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

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

2回答

2751閲覧

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

aaaaaaaa

総合スコア501

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

5クリップ

投稿2018/03/01 10:36

編集2018/03/30 09:39

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

mysql

1+-----------+------+-------------------------------------------+----------+ 2| host | user | password | ssl_type | 3+-----------+------+-------------------------------------------+----------+ 4| localhost | root | | | 5| 127.0.0.1 | root | | | 6| ::1 | root |       | | 7| localhost | | | | 8| localhost | pma | | | 9+-----------+------+-------------------------------------------+----------+

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

ここで質問があります。

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()をしても

mysql

1MariaDB [(none)]> select current_user(); 2+----------------+ 3| current_user() | 4+----------------+ 5| root@localhost | 6+----------------+ 71 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以外で接続できるようになるということでしょうか。

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

なぜ三つ

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 01:36

yambejp

総合スコア114779

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aaaaaaaa

2018/03/02 10:21

ご回答ありがとうございます。 >>保険 ということは、hostがlocalhostで接続しているときに何かしらの問題が発生することがあるのだと思うのですが、どのような問題が発生しますか。 localhostも127.0.0.1も::1同じPCからの接続を意味していると思うので、localhostに何かしらの問題が発生したら127.0.0.1も::1も影響を受けないのでしょうか。 >>冗長に設定をかいておけばサーバー側が最適なものを選択するので、サーバーの判断に任せて下さい すみません、この部分がよくわかりませんが、mysql.cnfあたりの設定ファイルに長めの設定を記述するとlocalhost以外で接続できるようになるということでしょうか。
yambejp

2018/03/02 11:43 編集

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

2018/03/20 23: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」
guest

0

userhostcommand接続
root127.0.0.1mysql -h 127.0.0.1 -u root内部
root::1mysql -h ::1 -u root内部
rootlocalhostmysql -u root内部
rootlocalhostmysql -h localhost -u root内部
root%mysql -h 10.0.11.2 -u root外部

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

pma は PhpMyAdmin Managed Account

投稿2018/03/20 14:48

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aaaaaaaa

2018/03/22 10: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 11:01

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問