なんかわからなくなったら探すのめんどくさいからノートにしてます
すぐ忘れるんで。
でもユーザー名とかPWとか隠すのめんどくさい。。
そもそもPython3が入ってなかったので
(このサイト)をステップ3まですべて行ってみた。
###問題のPythonからMySQLを接続する方法。
DBはschoolというものをもう作っていたのでそこに接続するようにする。
上記のURLを参照
ライブラリのインストールを行っていく。
Debian / Ubuntuの場合
sudo apt-get install python-dev default-libmysqlclient-dev
Python3の場合は更に追加で以下のライブラリをインストールします。
sudo apt-get install python3-dev
pipから以下のコマンドを入力すればインストールが完了です。
pip install mysqlclient
なんかpipあたりでうまくダウンロードできなかったりしたけどその辺しらべたらゴロゴロ出てくる。
touch ファイル名
で適当なファイルを作る。
vim ファイル名
で中身にPythonスプリクトを記入していく。
#!/usr/bin/env python3
import MySQLdb
connection = MySQLdb.connect(
host='UbuntuのIP',
user='MySQLで作ったユーザー名',
passwd='UbuntuのPW',
db='school')
結果これホストもユーザーもパスワードも書き方全部間違い。
Traceback (most recent call last):
File "./school", line 5, in <module>
connection = MySQLdb.connect(
File "/home/MySQLで作ったユーザー名/.local/lib/python3.8/site-packages/MySQLdb/__init__.py", line 130, in Connect
return Connection(*args, **kwargs)
File "/home/MySQLで作ったユーザー名/.local/lib/python3.8/site-packages/MySQLdb/connections.py", line 185, in __init__
super().__init__(*args, **kwargs2)
MySQLdb._exceptions.OperationalError: (2003, "Can't connect to MySQL server on 'UbuntuのIP:3306' (111)")
UbuntuのIPのMySQLサーバにアクセスできませんよーってエラーが出てきた。
一番下の
Can't connect to MySQL server
で検索をかけてみる。
こんなんでてきた。
言ってることは違うんだけど最後の方をみると、127.0.0.1やlocalhost以外は外部接続になってしまいそれでエラーになるらしい???なのか???(わかってない)
なのでhostの部分をlocalhostに変えてみる。
ついでにMySQLだというのを思い出し、UbuntuのパスワードからMySQLのパスワードに書き換えた。
#!/usr/bin/env python3
import MySQLdb
connection = MySQLdb.connect(
host='localhost',
user='MySQLで作ったユーザー名',
passwd='MySQLのPW',
db='school')
Traceback (most recent call last):
File "./school", line 5, in <module>
connection = MySQLdb.connect(
File "/home/MySQLで作ったユーザー名/.local/lib/python3.8/site-packages/MySQLdb/__init__.py", line 130, in Connect
return Connection(*args, **kwargs)
File "/home/MySQLで作ったユーザー名/.local/lib/python3.8/site-packages/MySQLdb/connections.py", line 185, in __init__
super().__init__(*args, **kwargs2)
MySQLdb._exceptions.OperationalError: (1044, "Access denied for user 'MySQLで作ったユーザー名'@'localhost' to database 'school'")
あっれまたエラー???
でも今度は違うエラーで
1044, "Access denied for user 'MySQLで作ったユーザー名'@'localhost' to database 'school'"
user 'MySQLで作ったユーザー名'のデータベースschoolは拒否された・・と・・?
Access denied for userで検索してみる。
これを見たんだけどよくわからない。
ログインで指定した情報と合致するアカウントが複数ある場合、ユーザー名よりホスト名の具体性が高いアカウントが優先して選択されるようです
とあるのでMySQLで作ったユーザー名は優先度低いってコト????(ちいかわ風)(よくわかってない)
って思ってなんとなくrootで実行したら成功した。
#!/usr/bin/env python3
import MySQLdb
connection = MySQLdb.connect(
host='localhost',
user='root',
passwd='MySQLのPW',
db='school')
最終的にはこんな感じ。
./school
で実行したらエラーも何も吐かなかったから実行だけされたのだと思う(ここのMySQLに繋いでとしか書いてなかったからね!)