WorkBenchでMySQLに接続してCSVファイルをインポートする

4月 14, 2024

Oracle CloudでOSがRHEL8のインスタンスでDrupalを運用しています。

cat /etc/redhat-release

Red Hat Enterprise Linux release 8.5 (Ootpa)

このCMSもWordPressと同様にデータベースが必要となっています。
MySQL Community Serverをインストール済みでDrupalのデータベースとして使用しています。普段はターミナルからの接続ですが、Workbenchを使用してデータベースに接続します。

mysql -u root -p
show databases;

mysql> show databases;
+——————–+
| Database |
+——————–+
| drupaldb |
| information_schema |
| mysql |
| performance_schema |
| sys |
+——————–+
5 rows in set (0.11 sec)

外部からの接続ですので事前に準備が必要です。OS自体のファイヤーウォールでポート番号3306のトラフィックを許可しておきます。

firewall-cmd --list-all

public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: http https ssh
ports: 3306/tcp
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

さらにOracle Cloudのセキュリティリストにあるイングレスルールにも同様にして接続を許可しておきます。
これで接続できるはずなのでWorkbenchにホスト名、ポート番号、ユーザー名など必要な項目を記入して接続を試みます。しかし、このユーザーでは接続できないというエラーが発生しました。

select user, host from mysql.user;

+——————+———–+
| user | host |
+——————+———–+
| mamushi | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+——————+———–+
5 rows in set (0.02 sec)

ターミナルでユーザー一覧を表示するとすべてがローカルホストとなっています。

そこで、外部から接続できるユーザーを新規で追加します。権限も付与します。既存のデータベースはもちろん、データベースを新規で作成できるようにもしておきました。セキュリティ面で心配な時は、%の部分をIPアドレスにして接続元を制限することもできます。自分はOracle CloudかOS自体で制限することにします。

CREATE USER 'workbench'@'%' IDENTIFIED BY 'Password123#';

GRANT ALL ON *.* to 'workbench'@'%';

再度、Workbenchで接続を試みます。今度は成功しました。

次は、データベースを作成してCSVファイルをインポートします。

新規で作成したデータベースの上で右クリックして、「Table Data Import Wizard」を選択します。
インポート完了後にテーブルを展開して「Select Rows」をクリックすると中のデータを確認することができます。

その際、Workbenchに表示されている構文はターミナルに貼り付けて表示することができます。

SELECT * FROM test.`9984`;

教育

Posted by admin