Techvenience

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

【MySQL】ユーザーを作成と権限の追加

【MySQL】ユーザーを作成と権限の追加

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

今回はMySQLのユーザー作成と権限追加についてです。
いつも通り、Macでの話になりますのでご注意下さい。

事前準備

MAMPの環境を想定していますので、以下の記事を元に環境構築をお願いします。
www.sky-limit-future.com

ユーザー作成の目的

最初に新たにユーザーを作成する目的について説明します。
説明が不要な方はユーザーの作成へ。

rootユーザーが用意されている

MySQLのデータベースにはrootユーザーが用意されていて、最初にデータベースの操作を行う場合はこのrootユーザーを使います。
rootユーザーは最初から用意されているユーザーであるので、MySQLに対してどんな命令でも出すことが可能です。

rootユーザーはなんでもできてしまう

上記のようにrootユーザーはなんでもできます。しかし、それが悪い方向に行くこともあります。
例えばセキュリティー上の問題です。rootユーザーのパスワードなどが漏洩した場合には、その権限で何をされるかわかりません。
もう一点は、普段使用するのには権限が多すぎてオペミスが怖いです。普段の作業ではできるだけ最小限の権限を持ったユーザーで作業を行い、必要な時だけrootユーザーで作業をするというのが望ましいです。

本題とはズレますが、MySQLインストールをした後には、必ずrootユーザーのパスワードを変更しましょう。
変更は以下のように実施します。変更が不要な方はユーザーの作成へ。

ここからはターミナルでの作業になります。
■ターミナルの起動
画面右上のSpotlight検索で「ターミナル」と入力すると、「ターミナル.app」と出るので、それを選択して下さい。
f:id:duo-taro100:20180404114827p:plain

■「/Applications/MAMP/Library/bin/」へ移動
以下のコマンドでディレクトリに移動します。

$ cd /Applications/MAMP/Library/bin/

■mysqlにrootユーザーで接続

$ ./mysql -u root -p

パスワードが要求されますが、MAMPの場合、rootユーザーのデフォルトパスワードは「root」です。

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

■パスワード変更
接続が完了したら、sql文を書くことができるので、以下のsql文でパスワードを変更します。
「XXXX」の箇所に設定したいパスワードを入力して下さい。

UPDATE user SET password=PASSWORD('XXXX')  WHERE host='localhost' AND user='root';
FLUSH PRIVILEGES;

これで完了です。
話が逸れましたが、続いて新しいユーザーを作成していきます。

ユーザーの作成

先ほど同様にターミナルを使用してユーザーを作成します。

「/Applications/MAMP/Library/bin/」へ移動

以下のコマンドでディレクトリに移動します。

$ cd /Applications/MAMP/Library/bin/

mysqlにrootユーザーで接続

$ ./mysql -u root -p

パスワードを入力して接続します。

ユーザーの作成

ユーザーを作成します。新しく作成するユーザー名を「YYYY」、パスワードを「ZZZZ」とすると以下のようになります。

CREATE USER 'YYYY'@localhost IDENTIFIED BY 'ZZZZ';
ユーザーが作成されたか確認

ユーザーが正しく作成されたか確認します。
■ mysqlデータベースを使用する。
使用するデータベースをmysqlに指定します。

USE mysql;

■ ユーザーを検索

select user,host from user;

これで出力される内容に、先ほど作成したユーザーが含まれていれば大丈夫です。
f:id:duo-taro100:20180404115149p:plain

ユーザーへの権限付与

権限の付与

ユーザーに権限を付与します。
今回は全てのDBに関する、全ての権限を与えます。本来はユーザーの用途に合わせて権限を変えるなどが必要です。

GRANT ALL PRIVILEGES ON *.* TO 'YYYY'@localhost;

エラーがなければ、これで権限の付与が完了しました。

新規ユーザーで接続

最後に、新たに作成したユーザーでmysqlに接続してみましょう。
まず、root権限で接続しているmysqlから接続を解除するために、「exit」と打ちます。

mysql> exit

先ほど作成したユーザー「YYYY」、パスワード「ZZZZ」で接続します。
ご自分の作成したユーザーに読み替えて下さい。

./mysql -u YYYY -p

パスワードが要求されるので「ZZZZ」と入力します。これで無事に接続できれば完了です。