Help us understand the problem. What is going on with this article?

Pythonからmysqlを操作したい.

More than 1 year has passed since last update.

文字通り,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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away