【MySQL】ユーザー作成と基本的なデータベース定義

MySQLを使用した、基本的なデータベース定義の方法をメモします。

Mac OSへインストールしたMySQLにて操作を解説しています。

環境 : Mac OS High Sierra 10.13.12、MySQL Ver 8.0.16 for osx10.13 on x86_64 (Homebrew)

MySQLでユーザーとデータベースを作成する

ユーザーを作成する

まずはターミナルからMySQLへ、一番大きな権限をもつrootでログインする

mysql -u root

後ほど作成するデータベースを操作するためのユーザーを作成します。
(データベースごとに作業用ユーザーを作成するのが一般的なため)

※基本的にMySQL内でのコマンドは文末に;(セミコロン)を付けて実行します。

ユーザー作成のSQL

CREATE USER ユーザ名@localhost IDENTIFIED BY ‘password’

@以降にIPアドレスやホスト名を指定(今回はローカル環境なのでlocalhostとしている)
IDENTIFIED BY で接続する際のパスワードを指定

データベースを作成

データベース作成のSQL

CREATE DATABASE 作成するデータベース名 CHARACTER SET UTF8

文字コードにUTF-8を指定して作成します。

CREATE DATABASE testerdb CHARACTER SET UTF8;

作成したデータベースの操作権限をユーザーへ与える

GRANT ALL ON データベース名.* TO ユーザ名

GRANT ALL ON testerdb.* TO tester@localhost;

🔽testerdbと、後ほど作成する全てのテーブルの全ての権限をユーザーtesterへ与えている。

権限を除外するには。。REVOKE

GRANTとは反対に権限を除外する場合はREVOKE文を使用します。
(ユーザー指定の前をTOではなく、FROM にするのがポイント)
REVOKE 権限名 ON データベース名.* FROM ユーザ名

🔽ユーザーtesterから、データベースtesterdbのテーブル削除の権限を除外する例


権限を表示する

SHOW GRANTS FOR ユーザー名

ユーザーでログインする

データベースの作成が出来たら、作成したユーザーでログインし直します。
\q
でrootユーザをデータベースからログアウト。

先ほどCREATE USERで作成したユーザでログインし直す。

mysql -u ユーザ名 -p データベース名

パスワードを入力する必要があるのでユーザ作成時に決めたパスワードを入力します。

接続が出来たら以下のコマンドで接続中のユーザ名を確認してみます。

select user();

(正しく接続出来ていることを確認する)

操作対象のデータベースが作成したものになっているかも確認しておきます。

select database();

NULLと表示されていた場合は use コマンドで操作対象のデータベースを選択します。
use testerdb

データベースにテーブルを作成する

データベース内にデータを格納するテーブルを作成します

テーブル作成のSQL

CREATE TABLE テーブル名 (カラム名 データ型 制約の種類(あれば),)
テーブル内に作成したい列(カラム)名ごとにカッコの中を ,(カンマ)で区切ります。

テーブル作成の一例
id, name, category_id という3つのカラムを作成している。
(列ごとにそれぞれ制約を設けています)

作成が成功したら、以下のコマンドで確認することが出来ます。

作成したテーブルの一覧を表示
show tables

テーブルの構造を見る(カラムのデータ型や制約など)
desc テーブル名

テーブルのカラム(列)に対しての制約などについては、次回以降の記事にて解説したいと思います。

データベース基本操作コマンド まとめ

操作コマンド
現在のユーザで操作対象のデータベースを選択する
(rootユーザなど複数のデータベースへ権限がある場合)
use データベース名
現在のユーザで操作権限のあるデータベース一覧を表示show databases
ログイン中のユーザーを確認select user()
現在の操作対象のデータベースを確認select database()
現在操作中のデータベース内のテーブルを一覧表示show tables
現在操作中のデータベース内のテーブルの詳細(構造)を表示desc テーブル名

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください