🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

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

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1931閲覧

python sshtunnel を使用して、ssh 経由のMySQLに接続すると Access denied (using password: Yes) になる件について

Mozart

総合スコア25

MySQL

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

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/03/19 14:21

編集2021/03/19 23:43

恐れ入ります。

現在、ローカル環境からLinuxサーバー内のMySQLにアクセスしてデータを取得する方法を検討しています。

from sshtunnel import SSHTunnelForwarder import mysql.connector print(1) with SSHTunnelForwarder( ("<サーバーのIPアドレス>", 22), ssh_host_key=None, ssh_username="<サーバーのuser_name>", ssh_password=None, ssh_pkey="<シークレットキーのパス>", remote_bind_address=("localhost", 3306), ) as server: print(2) con = mysql.connector.connect( user = "<MySQLのユーザー>", password = "<MySQLのパスワード>", database = "<DB名>", ) print(3)

こちらを実行すると、

1 2 Access denied for user '<MySQLのユーザー>'@'localhost' (using password: YES)

というようなエラーが表示されました。

通常、MySQLにログインするときにこの種のエラーが表示される場合は、
パスワードが間違っているときでしょうが、パスワードは合っているようです。

また、あえて、パスワード欄を『 = "" 』のように空欄にすると、

using password: No

と表示されますので、パスワード認証までは到達しているようなのです。

こちらの解決方法がおわかりになる方がいらっしゃいましたら、
教えていただけますと幸いです。

※追記
──────────────────

調べてみたところ、mysql.connector.connect()部分で、
ポートを指定したほうが良いという記事を見つけ調整しました。

con = mysql.connector.connect( port = server.local_bind_port, user = "<MySQLのユーザー>", password = "<MySQLのパスワード>", database = "<DB名>", )

すると、
出力は以下のところで固まるようになりました。(10分待っても同じでした)

1 2

──────────────────

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

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

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

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

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

guest

回答1

0

単純にパスワードが間違っている際に出る表示ですが、パスワードは間違いないでしょうか。
mysqlコマンド等でログインできることは確認していますでしょうか。

mysqlでは
'<MySQLのユーザー>'@'%' '<MySQLのユーザー>'@'localhost' 等で別々のパスワードを設定することも可能です。 別々の設定になっている可能性もありますので

remote_bind_address で指定するアドレスを、 localhostではなく 127.0.0.1 にしてみてはどうでしょうか。

投稿2021/03/20 02:00

calkinos

総合スコア452

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

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

Mozart

2021/03/20 04:38

ご返信ありがとうございます。 はい。terateamを起動して、sshでlinuxにログイン~MySQLにログインする方法は、 問題なくできました。 また、remote_bind_addressを、127.0.0.1 に設定してみたのですが、 結果は同じく、 Access denied for user '<MySQLのユーザー>'@'localhost' (using password: YES) となりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問