Techvenience

Technology × Convenience - Vue / React / Next / Nuxt / ChatGPTなどのIT技術がもたらす便利さをお伝えします。最近はChatGPTなどのAI技術を使ってブログを書いています。

【DB】MAMPでデータベースを使用する方法【MySQL】

【DB】MAMPでデータベースを使用する方法【MySQL】

f:id:duo-taro100:20160218004611p:plain

事前準備

以下の環境が整っていることを前提として話を進めます。
【MAMP】MAMPでPHP開発環境を整える【MySQL PHP 環境構築】
www.sky-limit-future.com

phpMyAdminを使う方法

phpMyAdminを使う方法が一般的ですが、私はphpMyAdminのUIが好きではないので使いません。
こちらのサイトがわかりやすく解説されているようなので参考にして下さい。

pc-karuma.net

その他ツールを使う方法

phpMyAdminを使用しない理由

私はphpMyAdminを使用しないので、他のツールを使用しています。
理由は以下のつです。
・SQLに慣れたいから
・UIが好みだから

phpMyAdminではテーブル作成なども簡単にできますが、SQLの勉強のために使わないようにしています。
また、前述していますが、単純にUIが気にくわないと理由もあります。
私が使用しているのは
Sequel Pro
・Workbench

ユーザーと権限の作成

まずはmysqlでのユーザー作成と権限付与を行います。
rootユーザーでの接続も可能ですが、極力避けたいです。
こちらを参考にして下さい。
www.sky-limit-future.com

Sequel Pro

普段よく使っているツールです。
細かい分析(実行計画)などはWorkbenchを使っていますが、ここでは説明を省きます。
業務などで大規模サービスを扱っている場合は、Workbenchがオススメです。

MySQL :: MySQL Workbench


■Sequel Proのインストール
こちらからインストール可能です。
https://sequelpro.com/download

f:id:duo-taro100:20180405120553p:plain

■MAMPのmysqlに接続する。
Sequel Proを起動して、「クイック接続」をクリックして、接続情報を入力します。
まず「ソケット」を選択します。新たに作成したユーザーを「YYYY」として、パスワードを「ZZZZ」とすると、(ご自分の作成した内容に合わせて読み替えて下さい)
以下の内容で入力して下さい。

入力内容
名前:なんでもいいです
ユーザー名:YYYY
パスワード:ZZZZ
データベース:空白で問題ありません
ソケット:/Applications/MAMP/tmp/mysql/mysql.sock

(rootユーザーの場合は ユーザー名:root、パスワード:設定したパスワード。デフォルトならroot)

f:id:duo-taro100:20180405120618p:plain

まずは「接続をテスト」で正しく接続できるかテストしましょう。
ちなみに接続するためには、MySQLサーバーが起動していることが必要です。
MAMPであれば、コントロール画面からサーバーを起動をクリックして、起動するまで待ちましょう。

f:id:duo-taro100:20180403154234p:plain

f:id:duo-taro100:20180405120752p:plain

テストで正しく接続できれば「接続に成功しました」と表示されます。
ここで「接続」を押す前に、「お気に入りに追加」しておきましょう。お気に入りに追加しないと、次に接続するときにこの入力をもう一度やらなければなりません。
お気に入りに追加したら、接続しましょう。

■データベースの選択
接続できれば次のような画面が開きます。

f:id:duo-taro100:20180405120821p:plain

左上の「データベースを選択...」をクリックすると、存在するデータベースが表示されます。
MAMPを使用していて、まだデータベースを追加していない場合、デフォルトで存在する
・information_schema
・mysql
・performance_schema
が見えるはずです。私の場合は新たに作成した「voter_db」というDBも見ることが可能です。
ここでどれかのデータベースを選択すれば、その中にあるテーブルを参照することができます。
例えば、私が作成した「voter_db」を選択すると

・USER
・VOTE_CONTENT
・VOTE_CONTENT_ITEM
・VOTE_RESULT

というテーブルが存在することがわかります。

もし最初からデータベースが選択された状態で始めたい場合は、接続時の入力内容のデータベース項目に、接続したいデータベース名を入れておきましょう。
以上で、MAMPのデータベースを使用することができるようになりました。最後に補足として、Sequel Proでデータベースの作成、テーブルの作成までをやってみたいと思います。

【補足】Sequel ProでのDB作成とテーブル作成

今回はSKY_LIMITという名前のデータベースを作成して、そのデータベースにユーザー管理用のユーザーテーブルを作成します。

DBの作成

まずはDBの作成です。
SQLでDB作成をすることもできますが、Sequel ProではUI上でデータベースを作成することも可能です。

f:id:duo-taro100:20180405120857p:plain

画像のように、左上のデータベースを選択するボタンをクリックすると「データベースを追加...」というのが出てくるので選択します。
するとモーダルが立ち上がるので、データベース名を入力して「追加」ボタンを押下します。
今回は「SLY_LIMIT」という名前で作成しました。
作成直後はテーブルが存在しないので、何も表示されていません。

テーブルの作成

テーブルの作成もUI上から可能です。
左下の「+」ボタンをクリックして、作成したいテーブル名を入力します。
作成後にテーブルの内容(カラム)を追加するにはテーブルを選択して、「構造」をクリックします。
画面中央からやや左下あたりに「+」ボタンがあるので、これを押すことでカラムの追加などが可能です。

f:id:duo-taro100:20180405120908p:plain

が、今回はSQLで作成します。
以下のSQLを用意しました。今回はサンプルなので、最小限のカラムやKEYだけ用意しました。細かい解説は省きます。

CREATE TABLE `USER` (
  `USER_ID` bigint(10) NOT NULL AUTO_INCREMENT COMMENT 'ユーザーID',
  `MAIL_ADDRESS` varchar(96) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'メールアドレス',
  `USER_NAME` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'ユーザー名',
  `PASSWORD` varchar(100) NOT NULL COMMENT 'パスワード',
  `UPDATE_USER` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '更新者',
  `UPDATE_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新日時',
  `INPUT_USER` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '作成者',
  `INPUT_DATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '作成日時',
  `ACTIVE_FLAG` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'アクティブフラグ   0:非アクティブ\r\n1:アクティブ',
  PRIMARY KEY (`USER_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='ユーザ';

■SQLの発行方法
まずは該当データベースを選択した状態で、クエリをクリックします。
すると、SQLを書く場所が出てくるので、先ほどのSQLをコピーして貼り付けます。

f:id:duo-taro100:20180405120919p:plain

右下のボタンを押すことで、反映されます。
これでテーブルの作成まで完了しました。