LoginSignup
0
0

More than 1 year has passed since last update.

【はじめの一歩】OCIのMySQL Database Serviceをつかってみよう!(MDS+Python 他②)

Last updated at Posted at 2022-05-31

はじめに

講釈よりも、とにかく触りたい・使いたい初心者向け手順書テイスト
OCIのMDSをたてて、Python等で繋げて使ってみる。
今回はComputeにConnector/Pythonをインストールし接続まで。
前提:OCIの有償アカウントであること(30日間無料トライアルの方もOKです)

本手順は、翔泳社の良書
MySQL徹底入門 第4版 MySQL 8.0対応を参考としています。
同書籍のサンプルファイルを活用します。
※サンプルファイルのReadMeに以下のありがたいお言葉があるので活用して効率化します。
「本書のサンプルデータは自由に利用できることとします。改変のほか、自由に利用、複製、再配布することができます。」

ただ、サンプルファイルの日本語部分は文字化けしているファイルがあるので、
そのまま使うのが難しい場合があります。

構成

前回:MDS+Python 他①で構成した環境を元に記載します。
未だの方は前回記事を御確認ください。
・Compute:Oracle Linux8
・MDS:MySQL8.0

データベース構造は以下の通りとします。

・データベースとテーブル作成
・データベース名:mdstest
・ユーザー名:mdsuser
・パスワード:任意 (パスワードポリシー:8字以上、大・小・数字・記号 例:Mdsp@ss01)
・文字コード:utf8mb4
・テーブル名:commodity

Field Type Null key default extra
code int Not Null PRI NULL AUTO_INCREMENT
name VARCHAR(30) - - NULL -
price int - - NULL -
start_date DATETIME - - NULL -
last_update TIMESTAMP - - CURRENT_TIMESTAMP DEFAULT_GENERATED

Connector/Pythonは「Pure Python版」を使います。

MDS データベース作成

MDSを停止させていたら起動します
image.png

cloud shellを起動させコンピュート・インスタンスにssh接続します。
image.png

$ ssh -i アップロードした秘密キー パブリックIPアドレス -l opc
例:$ ssh -i ssh-key-2022-05-31.key 150.230.193.122-l opc

MDSに接続
$ mysql -u MDSのユーザー名 -p -h MDSのプライベートIPアドレス
例:mysql -u root -p -h 10.0.1.51

データベース「mdstest」を作成し選択します。

mdstest
CREATE DATABASE mdstest CHARACTER SET utf8mb4;
use mdstest;

テーブル「commodity」を作成して確認します。

commodity
CREATE TABLE commodity(
	code INT AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(30),
	price INT,
	start_date DATETIME,
	last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) CHARACTER SET utf8mb4;

desc commodity;

実行ユーザー作成

ユーザー作成
CREATE USER 'mdsuser'@'%' IDENTIFIED BY 'Mdsp@ss01';
GRANT ALL PRIVILEGES ON mdstest.* TO 'mdsuser'@'%';
SELECT user,host FROM mysql.user;
quit

Connector/Python インストール

■Pythonのバージョン確認、Oracle Linux 8.2以降を実行しているか確認

バージョン確認
$ python -V
Python 3.6.8
$ cat /etc/oracle-release 
Oracle Linux Server release 8.5

■Python3.8のインストールとコンピュートから一旦ログアウト

Python3.8
$ sudo dnf module install python38 -y
$ sudo alternatives --set python /usr/bin/python3.8
$ python -V
Python 3.8.12
$ exit

■Connector/Python インストール
Connector/Python 公式サイト ダウンロードページ
より、「Connector/Python 」のリンクをクリック
image.png
・Select Operating System:Red Hat Enterprise Linux/Oracle Linux
・Select OS Version:Red Hat Enterprise Linux 8/Oracle Linux 8(ARM,64-bit)※ 
  ※AmpereシェイプはARMを選択。Intel系シェイプの場合はx86-64bitを選択
・「Download」ボタンをクリック

image.png

画面下の「No thanks,just start my download.」を選択
image.png

Cloud Shell画面の左上ハンバーガーボタンをクリック
「Upload」ボタンをクリック
image.png

表示されたポップアップ画面にコンピュート作成時にダウンロードしたRPMファイルをExplorerからドラッグ&ドロップ
「Upload」ボタンをクリック
image.png

scpでコンピュートへRPMファイルを送信

ファイル転送
$ scp -i [ssh秘密鍵ファイル] [コピー元のファイル] [コピー先]
例:$ scp  -i ssh-key-2022-05-31.key mysql-connector-python3-8.0.29-1.el8.aarch64.rpm opc@140.238.55.10:/home/opc/

sshコンピュートへログイン
$ ssh -i アップロードした秘密キー パブリックIPアドレス -l opc
例:$ ssh -i ssh-key-2022-05-31.key 150.230.193.122-l opc

インストール
$ sudo dnf install ./転送したrpmファイル -y
例:$ sudo dnf install ./mysql-connector-python3-8.0.29-1.el8.aarch64.rpm -y

接続確認

■pyファイル作成
$ vi connect.py
下記を転記※し、「ESCキー → :(コロン) → wq!」で上書き保存
  ※ mysql.connector.connectのカッコ内:user、password、host、databaseを自身の環境に合わせて編集

import mysql.connector
from mysql.connector import errorcode

try:
    conn = mysql.connector.connect(user='mdsuser', password='Mdsp@ss01',
                                   host='10.0.1.51',
                                   database='mdstest', use_pure=True)
    print(conn.is_connected())

except mysql.connector.Error as err:
    #print("Error:", err)
    print("VendorError:", err.errno)
    print("SQLState:", err.sqlstate)
    print("SQLException:", err.msg)
else:
    conn.close()

■実行
$ python connect.py
MDSのデータベースへ接続できた場合、「True」が帰ってくる。

接続確認
$ python connect.py 
True
$

今回は以上です。長文お付き合い頂き、ありがとうございました。

【重要】MDSは安価ですが、使わないのであれば、停止する、もしくは削除するのを忘れずに
    停止だけだと、ストレージは月単位で課金されます。
お片付け方法は、前回:MDS+Python 他①お片付けを参考にしてください。

0
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
0
0