初めてPython3でMySQLを使おうとしている初心者です。
プログラミング以前に基礎知識が足りていないかもしれませんがご容赦ください。
前提として、自分のPC(Windows10)のCドライブにPython3とMySQLをインストールし、パスも設定してあります。
関係あるかわかりませんが、エディタはVisual Studio Codeです。
本題に入ります。
現在、Python3を用いて、以下のようなコードでMySQLを試してみようとしたのですが、
Python3
1#!/usr/bin/python 2#! coding: utf-8 3 4import datetime 5import MySQLdb 6 7# 現在の日付を取得 8now = datetime.datetime.now() 9 10# データベース接続とカーソル生成 11connection_to_tests = MySQLdb.connect(user='root', passwd='****', host='****', db='tests') 12cursor_tests = connection_to_tests.cursor(MySQLdb.cursors.DictCursor) 13table_name = 'test' 14cursor_tests.execute("CREATE TABLE IF NOT EXISTS %s (date DATE, number INTEGER, string VARCHAR(4);" %table_name) 15 16# データ登録 17sql = "INSERT INTO %s VALUES(%s, %d, %s);" 18cursor_tests.execute = (sql, (table_name, now.date, 1234, 'test')) 19 20# データ検索 21cursor_tests.execute = ("SELECT * FROM %s WHERE (DATE_FORMAT(date, '%m') = %s);" %(table_name, now.month)) 22 23print(cursor_tests.fetchall())
その結果、
ErrorMessage
1MySQLdb._exceptions.OperationalError:(1130, "Host '****' is not allowed to connect to this MySQL server")
というエラーが出てしまいます。
python3もMySQLもpyファイルも全て同じCドライブに入っているのに、pythonでMySQLへの接続が許されないものなのでしょうか?
Google検索はしてみたものの調べ方の問題か、知識不足で説明を理解できていないのか、対処法がわかりません。
どのような設定や対処をすれば、pythonを使ってMySQLを使えるようになるか教えて下さい。
もし、コードの方の問題だとしたら、それも正して頂けると助かります。
【追記】
mysqlは実行されているのか
タスクマネージャーで見ると、mysqld.exeが動いていますが、実行されていることになりますか?
他のクライアントからの接続確認
自分のPCにMySQLを入れて一人で練習しようとしているだけなので、他の端末からは試していません。コマンドプロンプトからであれば「mysql -u root -p」で接続し操作できました。
【追記2】
mysql -u root -p**** -h **** tests
これをコマンドプロンプトでやってみた結果、
mysql Ver 8.0.19 for Win64 on......
から始まる非常に長いメッセージが返ってきました。
しかし、ついでに
>mysql -u root -p**** -h ****
これも試してみたのですが、
ERROR 2005 (HY000): Unknown MySQL server host **** (0)
というエラーが出て実行できませんでした。
自分がホスト名を間違えているのかと思い、
mysql> show variables like 'hostname';
で確認したのですが、ホスト名は正しいようです。
逆に、pythonのコードの方からホスト名を消して
connection_to_tests = MySQLdb.connect(user='root', passwd='****')
としてみたところ、当初の質問の
MySQLdb._exceptions.OperationalError:(1130, "Host '****' is not allowed to connect to this MySQL server")
というエラーが出なくなりました。
現在、この使い方が正しいのか判断がつかなくて止まっているのですが、pythonで同じPC内に入っているMySQLを使うときには、ホスト名は指定しなくて大丈夫なものなのでしょうか?
逆に、ホスト名を指定した時だけエラーになるのは、どういうことなのでしょうか?
質問ばかりで申し訳ありませんが、何卒ご教示頂けると幸いです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー