1
0

Python を使って MySQL に接続しようとしたところ、いくつかエラーがでたので解決策をメモ

Last updated at Posted at 2024-07-18

はじめに

pythonをつかってmysqlに接続しようとしたところ、少しつまずいたので、メモがてら記事を書いています。

今回解決できたエラー

  • mysql.connector.errors.DatabaseError: 2005 (HY000): Unknown MySQL server host
  • mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user

今回の環境

  • ラズパイで dokcer のコンテナ使用(mysql server 側)
  • 同じネットワーク内のメインPCから接続する(Python側)


本文

python側の修正

port番号の指定をhostと分けて指定する必要があった。

  • 誤り
    import mysql.connector
    
    def conn_db():
       conn = mysql.connector.connect(
          host = "192.168.0.***:3306",
          user = "root",
          password = "password",
          database="test"
      )
      return conn
    

  • 正しい
    import mysql.connector
    
    def conn_db():
       conn = mysql.connector.connect(
          host = "192.168.0.***",
          port = "3306"
          user = "root",
          password = "password",
          database="test"
      )
      return conn
    

リモート接続の権限付与

localhostではないため、接続の権限を付与しなければならなかった。

localのrootでmysqlに入り、以下のコマンドを実行します


  • リモート接続用のユーザーの作成
    CREATE USER 'root'@'192.168.0.***';
    

  • 作成したユーザーのパスワードを割り当て

      ALTER USER 'root'@'192.168.0.***' IDENTIFIED BY 'password';
    

  • 作成したユーザーに権限付与

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.****' WITH GRANT OPTION;
    

  • 権限の変更を有効化

    FLUSH PRIVILEGES;
    

参照

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0