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

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

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

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

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Q&A

解決済

5回答

5861閲覧

Mysqlの外部サーバーへの接続

seventhencore

総合スコア22

MySQL

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

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

0グッド

0クリップ

投稿2017/03/16 08:57

アプリケーションから、外部のMysqlサーバーへのデータの読み書きを行いたいため、
ローカルのMysqlクライアント?から、AWS上に作成したMysqlへの接続を試しています。

検索すると、関連する情報はたくさんでてくるので、試してみていますが接続できません。
(サーバー側で3306をListen状態であることも確認しましたし、アクセスができるようなユーザーも作成しました。)

1点、不思議なのが、

shell

1mysql -u user -p -h hostname

と入力した際の挙動が、

Enter password: ERROR 1045 (28000): Access denied for user 'user'@'プロバイダのサーバーと思われる名前' (using password: YES)

と、返ってきます。しかし、ping を同様にhostnameで実行しても、正しいグローバルIPが帰ってきます。

これは社内のネットワークで実行しているため、なにかそういった設定がなされているのかもしれません。しかし、自宅のLAN環境で実施した場合も、同様の現象が起こってしまいます。
こちらは何が原因なのでしょうか?
主にNWの問題だと思うのですが、どのように検索すればよいかわからず。。。

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

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

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

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

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

guest

回答5

0

ベストアンサー

もしかして select * from user; を行ったときに、
「Host が % もしくは空で、かつ User も空、パスワードはなし」のエントリがあったりしませんか。

MySQL での接続チェックの際、user のエントリを「Host と User でソート」して、その先頭から見るので、上の条件に合致するレコードがあると「任意のホストからの、匿名ユーザ、パスワードは指定なし」としてのログインとみなされます。
そしてパスワードが指定されていれば、「パスワード指定なし」とマッチしないので接続が拒否されます。
※任意のパスワードを受け付ける、ではない

このとき仮にホストとユーザを指定したレコードが(例えば user@localhost)あっても、それより優先して権限チェックされてしまいます。

投稿2017/03/17 01:29

tacsheaven

総合スコア13703

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

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

no-bu

2017/03/17 04:15 編集

優先順位があるのですねユーザーを多く作ることがないので直面したことがありませんでした。 参考になりました。 seventhencoreさん 事象がこちらの回答に該当していればここの説明も参考になると思います。 http://b.l0g.jp/mysql/user-at-localhost/
seventhencore

2017/03/17 05:18

接続の優先順位があるのですね。 なかなか、接続できずにuserをいろいろな条件で作ってしまっており、 それをほとんど消してスッキリさせ、新しく要件に合うユーザーを作成したところ、無事接続することができました!みなさんありがとうございます!
tacsheaven

2017/03/17 08:04

実際には最初のエントリしか使ってくれないので、完全一致するエントリがあっても無視されるというステキ仕様なので…嵌まるとなまじ正しいエントリがある故に気づきにくいという、孔明の罠です(w
guest

0

Error: 1045 SQLSTATE: 28000 (ER_ACCESS_DENIED_ERROR)

Message: Access denied for user '%s'@'%s' (using password: %s)

https://dev.mysql.com/doc/refman/5.6/en/mysql-change-user.html
ER_ACCESS_DENIED_ERROR

The user or password was wrong.

ユーザー名またはパスワードが間違っています。のエラーですね。権限が違っていてもでた覚えがあります。

bash

1root@d0149b82fb29:/# mysql --help 2mysql Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using EditLine wrapper 3Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 4 5Oracle is a registered trademark of Oracle Corporation and/or its 6affiliates. Other names may be trademarks of their respective 7owners. 8~~~一部抜粋 9Usage: mysql [OPTIONS] [database] 10 -u, --user=name User for login if not current user. 11 -h, --host=name Connect to host. 12 -p, --password[=name] 13 Password to use when connecting to server. If password is 14 not given it's asked from the tty. 15 -P, --port=# Port number to use for connection or 0 for default to, in 16 order of preference, my.cnf, $MYSQL_TCP_PORT, 17 /etc/services, built-in default (3306).

userはrootではないのでDB指定しないといけないので

bash

1mysql -u user -p password -h 192.168.0.xx databasename

パス付きだとこういう感じですかね

投稿2017/03/17 01:10

mosapride

総合スコア1480

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

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

0

サーバー側で3306をListen状態であることも確認しましたし、
アクセスができるようなユーザーも作成しました。

とありますが、どのようにユーザーを作ったのでしょうか。
もう少し、情報を具体的に出してください。

Access deniedなので、ホストまでは到達していると思いますので、ネットワークの問題ではなさそうです。
しかし、社内はともかく、自宅からも同じ結果が返るとしたら、セキュリティ的にちょっと問題ですね。
どこからでも、そのサーバーの3306番のポートに接続できるわけですから。

投稿2017/03/16 10:11

編集2017/03/16 10:15
shi_ue

総合スコア4437

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

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

seventhencore

2017/03/16 12:11

確かに、Access deniedですが、目的のサーバーが違う風に見えている、ということはないでしょうか? ERROR 1045 (28000): Access denied for user 'user'@hostname (using password: YES) と返ってくるのであれば、確かに目的のサーバーにたどり着けているのだな、というのは分かるのですが。。。 セキュリティ面では、接続できた後にきちんと絞っていく予定です。まずは何が原因で繋がらないのか、そこから、と思っています。
shi_ue

2017/03/16 13:04

@より後は接続元ですよ。ですからあなたの家からアクセスしたなら、プロバイダの逆引きされたホスト名が出ているだけだと思います。
shi_ue

2017/03/16 13:05

mysql -u user -p -h hostname としていると、DB名が指定されていません。ユーザーを設定したDB名を最後に付けてください。
guest

0

'user'@'プロバイダのサーバーと思われる名前'
というユーザーはAWSのMySQLに作成されているのでしょうか?

投稿2017/03/16 10:08

turbgraphics200

総合スコア4267

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

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

seventhencore

2017/03/16 12:04

確かにuserというuserはaws上のmysqlに作成したユーザーです。 私の認識では文法がsshと同じなので、awsから見れば user@localhost のようなものにログインしたいが、localhost部分にIPを入力すると、なぜか経由しているサーバーに置き換えられてしまうため、正しいlocalhost(awsから見た)にたどり着けていないのかな、と認識したのですが・・・
guest

0

そのエラーが出ているということはポートは空いていそうですね。
あとは利用するユーザーにも接続IP制限がかかっていないか確認してみてください。
権限を持っていらっしゃるならmysqlにて

mysql> select host, user from mysql.user;

で接続ユーザー自体にlocalhostなどホスト指定がされていませんでしょうか。

投稿2017/03/16 09:49

no-bu

総合スコア75

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

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

no-bu

2017/03/16 10:01

それとパスワードは設定されていますでしょうか。
seventhencore

2017/03/16 12:01

+--------+------------------+ | user | host | +--------+------------------+ | user | % | .... となります。とりあえず、接続ができるかを試してみたいのでガバガバですが。。。 パスワードも設定しているため、接続のコマンドを投げた後、入力しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問