はじめに
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;
参照