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

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

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

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Python

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

Q&A

解決済

2回答

2139閲覧

pythonファイルからMySQLに接続できない

shogo_u

総合スコア5

MySQL

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Python

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

0グッド

0クリップ

投稿2020/04/13 00:42

pythonファイルからMySQLに接続できない

pythonとMySQLの初心者です。
以下のコードでMySQLへの接続を確認したいのですが、うまくいきません。

python

1import mysql.connector 2 3mydb = mysql.connector.connect( 4 host = 'local', 5 user = 'root', 6 port = '3306', 7 passwd = 'password' 8 ) 9 10print(mydb)

以下のようなエラーコードが出てしまします

Traceback (most recent call last): File "C:\Users\sh\AppData\Local\Programs\Python\Python37\Lib\site-packages\mysql\connector\network.py", line 485, in open_connection socket.SOL_TCP) File "C:\Users\sh\AppData\Local\Programs\Python\Python37\lib\socket.py", line 752, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno 11001] getaddrinfo failed During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:/Users/sh/Desktop/PycharmProjects/mysql/database.py", line 8, in <module> passwd = 'pass' File "C:\Users\sh\AppData\Local\Programs\Python\Python37\Lib\site-packages\mysql\connector\__init__.py", line 179, in connect return MySQLConnection(*args, **kwargs) File "C:\Users\sh\AppData\Local\Programs\Python\Python37\Lib\site-packages\mysql\connector\connection.py", line 95, in __init__ self.connect(**kwargs) File "C:\Users\sh\AppData\Local\Programs\Python\Python37\Lib\site-packages\mysql\connector\abstracts.py", line 716, in connect self._open_connection() File "C:\Users\sh\AppData\Local\Programs\Python\Python37\Lib\site-packages\mysql\connector\connection.py", line 206, in _open_connection self._socket.open_connection() File "C:\Users\sh\AppData\Local\Programs\Python\Python37\Lib\site-packages\mysql\connector\network.py", line 501, in open_connection errno=2003, values=(self.get_address(), _strioerror(err))) mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'local:3306' (11001 getaddrinfo failed) Process finished with exit code 1

試したこと

Pathはすでに通していてコマンドプロンプトから管理者権限をもつと以下のコードでログインはできました

command

1mysql -u root -p

ただ、管理者権限をもったコマンドプロンプトからでもpythonファイルからMySQLには接続できませんでした。Pycharmからも同様です。
また、ファイアーオール、Portは確認済みです。
ファイアーオール(allow)(MySQLを作成)
Port(3306)

補足情報(FW/ツールのバージョンなど)
editor: Pycharm
Python 3.7
os: windows 10
mysql: version 8.0.19(server 8.0, router8.0, shell8.0, workbench8.0CE)
location: program file->MYSQL

MySQLに接続するのは初めての初心者です。
ご指摘の方よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

エラーメッセージは、「Can't connect to MySQL server on 'local:3306' (11001 getaddrinfo failed)」([直訳]'local:3306'のMySQL serverに接続できません(アドレス情報取得で失敗))というものです。

MySQLサーバが稼働しているマシンと、コマンドプロンプトが稼働しているマシンは同一だと思われますので、'local'の代わりに、'127.0.0.1'としてみてください。

投稿2020/04/13 01:06

coco_bauer

総合スコア6915

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

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

shogo_u

2020/04/13 14:49

素早いご返答ありがとうございます! localのかわりに127.0.0.1を使ったところ、以前出ていたエラーコードは消えたのですが、以下のエラーコードが出てきてしましました。 ''' mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_password' is not supported ''' どうやらpythonがcaching cha2 passwaod をサポートしていないみたいなので、MySQL server 8.0のファイルへ行き、my.iniというファイルを以下のように編集しました。 ''' # The default authentication plugin to be used when connecting to the server # default_authentication_plugin=caching_sha2_password default_authentication_plugin= mysql_native_password ''' そしてその確認のために以下のコードを権限付きのコマンドプロンプト走らせました。 ''' mysql> show variables like 'default_authentication_plugin'; +-------------------------------+-----------------------+ | Variable_name | Value | +-------------------------------+-----------------------+ | default_authentication_plugin | mysql_native_password | +-------------------------------+-----------------------+ ''' この画面ではデフォルトを変えることに成功したのですが、同じ権限付きのコマンドプロンプトでpythonファイルを実行すると ''' mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_password' is not supported ''' と同じエラーが出てきてしましました。pycharmで実行しても同じでした。 ここから何を試せばよいのかわからなくなってしまったため再度質問させていただきました。お手数ですがご回答いただけると幸いです。 よろしくお願いいたします。
guest

0

mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_password' is not supportedのエラーについては

https://stackoverflow.com/questions/50557234/authentication-plugin-caching-sha2-password-is-not-supported

上記のページを参考にしてください。
具体的には、msiファイルをダウンロード、実行し、python 3.8対応のファイルを作成します。
私の場合はEドライブにファイルが出来たので、丸ごとコピーして、本来のライブラリファイルと入れ替えました。

投稿2020/05/26 13:33

keisuke-1982

総合スコア2

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

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

keisuke-1982

2020/05/26 13:38

もう少し付け加えると、 mysql.connector for Python をインストール必要がある事が分かりました。そのファイルをコピー&ペーストします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問