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

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

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

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

Q&A

解決済

1回答

263閲覧

ユーザー名とパスワードの対応関係を確かめたい

vitabrevisarsl1

総合スコア57

MariaDB

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

0グッド

0クリップ

投稿2017/09/22 02:38

ログイン入力とUser, Hostの対応関係が判然としません。
mysql -uroot -p -> パス入力 -> select User, Host, Password from mysql.user;

+------------+-----------+-------------------------------------------+ | User | Host | Password | +------------+-----------+-------------------------------------------+ | root | localhost | | | root | 127.0.0.1 | | | root | ::1 | | | | localhost | | | pma | localhost | | | sampleuser | % | *59C70DA2F3E3A5BDF46B68F5C8B8F25762BCCEF0 | +------------+-----------+-------------------------------------------+ -> \q

mysql -> show databases; -> DB2つ
mysql -upma -> show databases; -> DB3つ
mysql -usampleuser -> show databases; -> DB2つ
mysql -uroot -p -> show databases; -> DB複数

mysql -uroot -> ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

疑問:
・(表上3行)User名root Password無し なのにエラー⑤になる。逆にパス入力①するとログインできる。
・sampleuserはPassword設定が有るのに-p入力を促されない。

①の対応表は入力と一致していない様なのですが、違うでしょうか?

ご教授いただけますと幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

MariaDB (とその派生元である MySQL)では、ログインチェックの際の動きがちょっと特殊です。
まず、mysql.user をhost, user でソートしますが、その際に % は一番最後に、user が空白も後ろになるように並び替えられます。つまり

+------------+-----------+-------------------------------------------+ | User | Host | Password | +------------+-----------+-------------------------------------------+ | root | localhost | | | pma | localhost | | | | localhost | | | root | 127.0.0.1 | | | root | ::1 | | | sampleuser | % | *59C70DA2F3E3A5BDF46B68F5C8B8F25762BCCEF0 | +------------+-----------+-------------------------------------------+

となります。
そして、この表の上から順に適用していきます。
なので、localhost で sampleuser の接続の場合は、3番目の「任意のユーザーが localhost で接続する」とマッチして、パスワードなしで接続できるのです。

root が接続できないのは、MariaDB の設定で、root に対して「UNIX Socket による認証」という接続方式が指定されているためです(users テーブルの plugin カラム)。このため、mysql -u root ではだめで、OS の root ユーザーでアクセスする 必要があります。つまり sudo mysql -u rootなら通ります。

投稿2017/09/22 02:57

tacsheaven

総合スコア13703

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問