MySQLを使った安全なデータベース運用を始めるために、まずは ユーザーアカウントの作成とデータベースの設定 を行いましょう。本記事では、アカウント作成の重要性から具体的な手順、さらにA5Mk-2での設定方法 までをわかりやすく解説します!
本記事で学べること
- ✅セキュリティ強化:root以外のアカウントを作成する理由とその効果
- ✅具体的な手順:コマンドを使ったアカウント作成方法とデータベースの作成方法
- ✅A5Mk-2の設定:作成したアカウント・データベースをA5Mk-2で利用する設定方法
この記事は次のような方におすすめです:
- 初めてデータベースを操作する方
- Webシステム開発でセキュリティを重視したい方
- JavaとMySQLの連携に興味がある方
事前準備:
この記事を進める前に、前回の記事で解説した「MySQLのインストール手順」を確認してください。まだの方は、以下からご覧いただけます👇
なぜ新しいユーザーアカウントとデータベースが必要なのか
ユーザアカウントの作成理由
MySQLのデフォルトユーザーであるroot
をそのまま使用するのは、セキュリティの観点からは推奨されません。専用ユーザーを作成する主な理由は以下の通りです。
- セキュリティ向上: root権限を制限し、不正アクセス時の被害を軽減できます。
- 監査: ユーザーごとの操作ログを記録し、問題発生時の原因特定を容易化できます。
- 利便性: 開発・テスト・本番環境など、用途に応じた権限を持つユーザーを作成し、運用効率化できます。
このように、専用ユーザーを作成することで、セキュリティ、監査、利便性の面で多くのメリットがあります。
データベースの作成理由
既存のMySQL
をそのまま使用するのではなく、新規にデータベースを作成する主な理由は以下の通りです。
- 安全性: 他のデータと分離することで、誤操作によるデータ破損リスクを軽減します。
- 権限管理: データベース専用のユーザーを作成し、アクセス権限を細かく設定できます。
- 運用管理: アプリケーションごとにデータベースを分けることで、バックアップや移行を容易化できます。
- 開発・テスト環境の分離: 本番環境と開発・テスト環境を分離し、データ破壊リスクを軽減します。
このように、データベースを分けることで、安全性、権限管理、運用管理、開発・テスト環境の分離など、多くのメリットが得られます。
新しいユーザーアカウントの作成手順
それでは実際にコマンドプロンプトを使って自分のユーザーアカウントを追加しましょう。
- Windowsボタン+Rを押して「cmd」と入力し、コマンドプロンプトを開きます。
- ※コマンドプロンプトの使い方がわからない場合は、「コマンドプロンプト 使い方」で調べてください。
以下のコマンドを実行してMySQLにログインします。
mysql -u root -p
実行後、最初に設定したrootユーザーのパスワードを入力してください。正しくログインできれば、mysql>
というプロンプトが表示されます。
以下のコマンドで新しいユーザーを作成します。
new_user
:作成するユーザー名。localhost
:ホスト名(ローカルPCの場合はそのままでOK)。secure_password
:設定するパスワード。
成功例:以下のメッセージが表示されれば成功です。
Query OK, 0 rows affected (0.01 sec)
my_database
:対象のデータベース名(全データベースに適用する場合は*.*
)。
補足:必要に応じて、SELECT, INSERT, UPDATE
など、特定の操作に絞ることもできます。
成功例:以下のメッセージが表示されれば成功です。
Query OK, 0 rows affected (0.00 sec)
補足:コマンド実行後に、権限を有効化するために以下のコマンドを追加すると良いです。
FLUSH PRIVILEGES;
GRANT
の後に FLUSH PRIVILEGES;
を実行すると、変更が即時に適用されます。
以下のコマンドで、ユーザーが正しく追加されているかを確認できます。
SELECT user, host FROM mysql.user;
補足:実行結果に新しいユーザー名が表示されればOKです。
最後に以下のコマンドを入力してMySQLを終了します。
exit;
これでユーザーアカウントの作成は完了です!以降の作業では、この新しいユーザーアカウントを使用して、よりセキュアな操作を行うことができます。
新しいデータベースの作成
コマンドプロンプトを使って新しくデータベースを作成しましょう。STEP2まではアカウント作成までと流れは同じです。
- Windowsボタン+Rを押して「cmd」と入力し、コマンドプロンプトを開きます。
- ※コマンドプロンプトの使い方がわからない場合は、「コマンドプロンプト 使い方」で調べてください。
以下のコマンドを実行してMySQLにログインします。
mysql -u root -p
実行後、最初に設定したrootユーザーのパスワードを入力してください。正しくログインできれば、mysql>
というプロンプトが表示されます。
ankisys_db
という名前のデータベースを作成する場合、以下のSQLを実行します。
確認方法:以下のコマンドで追加されたかを確認します。
SHOW DATABASES;
ankisys_db
がリストに表示されていれば、データベースの作成は成功です。
データベースの中にテーブルを作成します。例えば、account_master
テーブルを作成する場合は以下のSQLを実行します。
CREATE TABLE account_master (
AccountID INT NOT NULL AUTO_INCREMENT,
UserID INT NOT NULL,
UserName VARCHAR(50) NOT NULL,
Password VARCHAR(255) NOT NULL,
RoleID INT DEFAULT NULL,
Remarks TEXT,
PRIMARY KEY (AccountID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
作成したテーブルを確認するには、以下のコマンドを実行します。
SHOW TABLES;
account_master
がリストに表示されていれば、テーブル作成も成功です。
データベースの作成と確認が終わったら、MySQLを終了してコマンドプロンプトに戻ります。
以下のコマンドを入力してください。
exit;
これでMySQLの操作が終了し、コマンドプロンプトに戻ります。
「A5Mk-2の設定変更:作成したアカウント・データベースへの再ログイン
それでは先ほど作成したアカウント・データベースをA5Mk-2で常に利用できるように設定を変更しましょう。
データベースを追加する画面を開きましょう。起動手順は以下の通りです。
- A5Mk-2を起動します。
- データベース一覧を右クリックし、「データベースの追加と削除」を選択します。
- 左下の【追加】ボタンをクリックします。
- 「MySQL/MariaDB(直接接続)」を選択します。
- 各項目を以下のように入力します。
- 「ユーザーID」 → 先ほど作成したユーザーアカウント
- 「パスワード」 → 設定したパスワード
- 「データベース」 → 先ほど作成したデータベースを選択
※ ユーザーIDとパスワードが正しく入力されていないと、データベースの選択ができません。
- 【テスト接続】ボタンをクリックし、成功したら【OK】ボタンをクリックしてデータベースの追加を完了させます。
よくあるエラーと対処法
’〇〇’ は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。
このエラーは、コマンドプロンプトでコマンドが認識されない場合に発生します。主な原因と対処法は以下の通りです。
- 原因1:コマンドの入力ミス
コマンドを誤って入力した場合に発生します。特にスペルミスやスペースの有無を確認してください。 - 原因2:MySQLのパスが環境変数に登録されていない
MySQLをインストールした後、mysql
コマンドを認識するためには、環境変数にMySQLのインストールディレクトリ(bin
フォルダ)を登録する必要があります。
対処法:「MySQL 環境変数 設定 手順」で検索すると具体例が見つかります。
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
このエラーは、MySQLへのログインに失敗した場合に発生します。主な原因と対処法を以下にまとめます:
- 原因1:パスワードが間違っている
rootユーザーのパスワードを誤入力すると発生します。
対処法:正しいパスワードを入力してください。パスワードがわからない場合、MySQLの初期設定を確認してください。再インストールするのも1つです。 - 原因2:MySQLがインストール直後の状態
MySQLの初期設定時にrootユーザーのパスワードが設定されていない場合に発生します。
対処法:以下のコマンドで新しいパスワードを設定してください。ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
- 原因3:権限が不足している
現在ログインしようとしているユーザー(例:new_user
)に必要な権限が付与されていない場合に発生します。
対処法:権限を確認し、必要な権限を付与してください。具体的には以下のコマンドを実行します:GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'localhost'; FLUSH PRIVILEGES;
ERROR 1064 (42000): You have an error in your SQL syntax
このエラーは、SQL文に誤りがある場合に発生します。主な原因と対処法を以下にまとめます:
- 原因1:SQL文の構文ミス
タイポや構文の誤りが原因で発生します。
例:以下のような誤りCREAT USER 'new_user'@'localhost' IDENTIFIED BY 'secure_password';
対処法:
CREATE USER
のように正しい構文を使用してください。 - 原因2:文字列の囲み方が間違っている
SQLでは、文字列をシングルクォート('
)で囲む必要があります。ダブルクォート("
)を使用している場合は修正してください。
例:
CREATE USER "new_user"@'localhost' IDENTIFIED BY "secure_password";
上記はエラーになりますので、以下のように修正してください
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'secure_password';
課題
今回の講義に合わせて簡単な課題にチャレンジしてみましょう。
課題3についてはネットなどで調べないとわからない内容ですが、頑張りましょう!
解答については次回記事で紹介します。
課題1
新しくテスト用のデータベースを作成しましょう。
作成するデータベース名は ankisys_test
とします。
課題2
ankisys_test
だけにログインできる「test」ユーザーを作成しましょう。
課題3
今回作成した ankisys_db
のデータを ankisys_test
にコピーしてみましょう。
方法がわからない場合は、調べながら試してみてください!
ヒント:「MySQLのデータ移行には INSERT INTO … SELECT
や mysqldump
コマンドを使う方法があります。」
今回の講義では、MySQLの基本的な操作として、ユーザーアカウントとデータベースの作成を行いました。これらはWebシステム開発の基礎となる重要な作業です。
ユーザーアカウント作成
rootユーザーは権限が強すぎるため、Webシステムごとに専用ユーザーを作成し、必要な権限のみを与えましょう。セキュリティリスクを減らし、操作ログの監査も容易になります。
データベース作成
他のシステムとデータベースを共有すると、誤操作でデータを破損する可能性があります。アプリケーションごとに独立したデータベースを作成し、専用ユーザーを設定することで、安全性を高めることができます。
次回の講義では、実際にWebシステムにデータベースを接続し、データの読み書きを行う方法を学びます。お楽しみに!
「記事の更新を待てない!」「すぐに動画で学びたい!」という方には、Udemyでの学習がおすすめです。
私自身も利用して、基礎から応用までしっかりと学べたので、非常に助かりました!ぜひ一度チェックしてみてください。
Udemyについての詳しい記事はコチラをご参照ください。