メニュー

1-14 MySQLからDB・ユーザーの準備/ユーザーの権限設定

DBの準備

DB「test_db」を作成する。

CREATE DATABASE test_db;

DB名には「?」といった記号は使用できない。

DBを作成できたか確認する。

SHOW DATABASES;

作成したDBの情報をinformation_schemaから確認するには、以下のように入力。

SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='test_db';

以下のように表示されるはず。

+--------------+-------------+----------------------------+------------------------+----------+--------------------+
| CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH | DEFAULT_ENCRYPTION |
+--------------+-------------+----------------------------+------------------------+----------+--------------------+
| def          | test_db     | utf8mb4                    | utf8mb4_0900_ai_ci     |     NULL | NO                 |
+--------------+-------------+----------------------------+------------------------+----------+--------------------+
1 row in set (0.00 sec)

もし間違えてDBを作成してしまったら、DROP DATABASE文からDBを削除する。

DROP DATABASE test_db;

DB操作のテスト

特定のDBで何かしらの操作をしたいなら、USEを使うとよい。

USE test_db;

USEでDBを選択したあと、ためにしテーブル「test」を作成するなら、以下のように入力する。

CREATE TABLE test(
  id INT NOT NULL PRIMARY KEY
);

テーブル作成後は、テーブルがちゃんと作成されているかを確認すること。

SHOW TABLES;

今度は反対に、テーブル「test」を削除するなら、以下のように入力する。

DROP TABLE test;

ユーザーの準備

ユーザー一覧を確認するときは、mysql.userを参照する。rootだと全てのユーザーを確認できる。

SELECT USER, HOST FROM mysql.user;

新規ユーザー「test_user」を作成するときにパスワードも一緒に設定するなら、以下のようなコマンドで一括登録する。
passwordの部分に実際に使用するパスワードを入れた状態で入力すること。

CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'passward';

一括でなくとも登録は可能。

一括でない場合、まずは新規ユーザー「test_user」を作成する。

CREATE USER 'test_user'@'localhost';

新規ユーザー「test_user」のパスワードを設定する。passwordの部分に実際に使用するパスワードを入れた状態で入力すること。

ALTER USER 'test_user'@'localhost' IDENTIFIED BY 'passward';

ALTER USER文からは、パスワードの再設定を行うことも可能。

間違えて作成したユーザーは、DROP USER文で削除できる。

DROP USER 'test_user'@'localhost';

ユーザーの権限設定

ユーザー「test_user」の権限を確認する。

SHOW GRANTS FOR 'test_user'@'localhost';

入力すると、以下のような結果が表示される。

+---------------------------------------------------+
| Grants for test_user@localhost                    |
+---------------------------------------------------+
| GRANT USAGE ON *.* TO `test_user`@`localhost`     |
+---------------------------------------------------+
1 row in set (0.00 sec)

USAGEとは、何も権限がないという意味。
新規でユーザーが作成されると、グローバルレベルでUSAGE権限(何も権限がないという権限)が付与される。

実際にDBを使用するときには、DBレベルでユーザーに権限を与える。

以下を入力して、DB「test_db」のALL権限を、ユーザー「test_user」に付与する。

GRANT ALL PRIVILEGES ON `test_db`.* TO 'test_user'@'localhost';