今回は、MySQLでのユーザー作成と権限付与の基本について解説します。
特に研修中によくある質問——
「新しいユーザーを作るにはどうすればいいですか?」
「rootユーザーを使い続けるのってダメなんですか?」
そんな疑問にお答えしながら、安全で効率的なユーザー管理の方法を紹介していきます!
なぜrootユーザーを使い続けると危険なのか?
MySQLをインストールすると自動的に作られる「rootユーザー」。これはいわば「データベースの神様」のような存在です。
rootユーザーができること |
---|
全データベースの作成・削除 |
ユーザー管理 |
権限変更 |
すべてのテーブルへの操作 |
このように何でもできてしまうため、もしもパスワードが漏れた場合や、操作を間違えた場合に重大な事故につながります。
安全運用のポイント
- 本番環境ではrootユーザーを直接使わない
- 最小限の権限を持ったユーザーを作成して使う
- 作業内容に応じて権限を細かく分ける
方法①:MySQL Workbenchからユーザーを作成する
GUI操作に慣れていない方でも安心です!
手順まとめ
- MySQL Workbench を開く
- 上部メニューから「Server」→「Users and Privileges」をクリック
- 「Add Account」ボタンを押す
- 必要事項を入力
入力項目 | 説明 |
---|---|
Login Name | ユーザー名(例:newuser ) |
Password / Retype Password | パスワード |
Limit to Hosts Matching | 接続元ホスト(通常はそのままでOK) |
Administrative Roles | 権限グループ(必要なものだけチェック) |
- 「Apply」をクリックして完了!
方法②:コマンドラインでユーザーを作成・権限付与する
SQLでの管理に慣れておくと、将来的に自動化やスクリプト化に便利です。
ステップ①:MySQLにログイン
mysql -u root -p
パスワードを入力して接続。
ステップ②:ユーザーの作成
CREATE USER 'newuser'@'localhost' IDENTIFIED BY '0';
値 | 説明 |
---|---|
'newuser' | 新しいユーザー名 |
'localhost' | 接続を許可するホスト(同一マシン) |
'0' | パスワード(例として) |
ステップ③:権限の付与
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
ALL PRIVILEGES
:すべての操作を許可(開発用ならOK)*.*
:すべてのデータベースとテーブルを対象にする
本番環境では、特定のDBや権限だけ付与するのが基本です!
ステップ④:権限の反映
FLUSH PRIVILEGES;
これで設定が有効になります。
よく使う権限の種類一覧(抜粋)
権限 | 内容 |
---|---|
SELECT | データの読み取り |
INSERT | データの追加 |
UPDATE | データの更新 |
DELETE | データの削除 |
CREATE | テーブルやDBの作成 |
DROP | テーブルやDBの削除 |
ALL PRIVILEGES | 全部(※開発環境のみで使用推奨) |
例:carsデータベースにだけ権限を与えたい場合
GRANT SELECT, INSERT, UPDATE ON cars.* TO 'newuser'@'localhost';
→ これで cars
データベース内のテーブルに対して読み取り・追加・更新ができます。
まとめ
項目 | 内容 |
---|---|
rootユーザーは強力すぎる | 普段使いは避けよう |
権限の細分化が大切 | 読み取り・書き込みなど必要な操作だけ許可 |
GUIとSQLどちらでも作成可能 | 状況に応じて使い分けよう |
開発環境と本番環境ではユーザーを分ける | セキュリティ・事故防止の基本 |
今後の学習の指針
- 各権限の動作確認を実際にやってみよう(
SELECT
だけのユーザーでDELETE
できる?) REVOKE
コマンドで権限を取り消す方法も学ぼう- ホスト名の制限(
localhost
,%
, IP指定)についても知っておこう - 本番環境で使える「最小権限の原則」についても調べてみよう
ユーザー管理はデータベースセキュリティの出発点です。
研修の段階で正しい使い方をしっかり身につけておきましょう!