Pythonからmysqlを操作したい.


文字通り,Pythonからmysqlを操作したい.
どのドライバにするか迷ったが,今回はpython3からもアクセスできる&環境構築が簡単そうなmysql-connector-python-rfを用いることにする.

−環境
MacOS High Sierra 10.13.5
Python 3.6.1

pipでインストールできた.

pip install mysql-connector-python-rf

以下の記事通りにインストールを試みた.
https://qiita.com/hoto17296/items/0cfe7cdd3c47b69cc892
しかし,mysqlのアクセスのところで,
”authentication plugin 'caching_sha2_password' is not supported”のエラーが発生.
Mysqlのデフォルトのpluginがcaching_sha2_passwordとなっており,これは,mysql-connector-python-rfのドライバには対応していないことが判明した.なので,作成するユーザーのpluginの設定を変更して,ユーザーを作成することにする.

root でログインする.

mysql -u root -p 

user1というユーザーを作成する.

create user ‘user1’@‘localhost' identified with mysql_native_password by 'user1_Password';

Query OK, 0 rows affected (0.09 sec)

”with mysql_native_password”をつけることで,pluginを変更してエラーを対処することができた.

user1に全権限を付与する.

grant all on *.* to 'user1'@'localhost';

rootからログアウトする.

exit

user1でログインする.

mysql -u user1 -p

現在の権限を確認する.

show grants;

———————————————————————————————+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON . TO user1@localhost |
| GRANT BACKUP_ADMIN,BINLOG_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SET_USER_ID,SYSTEM_VARIABLES_ADMIN,XA_RECOVER_ADMIN ON . TO user1@localhost

設定が反映され,全権限が付与されている.

こうすることで


import mysql.connector

conn = mysql.connector.connect(
    auth_plugin='mysql_native_password',
    host = 'localhost',
    port = 3306,
    user = 'user1',
    password = 'user1_Password',
    database = 'twitteruser1',
)
cur = conn.cursor()

print(conn.is_connected())

のスクリプトが実行可能となった.

何も考えずに,ユーザに全権限を付与することはあまり好ましくないかもしれないが,今はローカル環境なので,とりあえず許すことにする.

また,databaseの作り方などの,基本的な操作方法について,次の記事で更新したのでそちらもよろしければ.
https://qiita.com/kotaaaa/items/84beefa8e8684cae3f99

アドバイス,コメント等あれば,ぜひよろしくお願いします.

参考
https://www.s-style.co.jp/blog/2018/05/1807/
https://qiita.com/hoto17296/items/0cfe7cdd3c47b69cc892