MySQL で新しいユーザーを作成して権限を付与する方法
MySQL は、データを保存および整理し、ユーザーがデータを取得できるようにする、人気があり広く使用されているデータベース管理システムです。ユーザーにテーブルやデータベースに対する特定の権限を付与する膨大なオプションが付属しています。
このガイドでは、新しいユーザーを作成し、MySQL データベースに権限を付与する方法を学習します。
MySQL で新しいユーザーを作成する方法
新しいユーザーを作成するには、まず MySQL シェルにログインします。
sudo mysql -u root -p
sudo パスワードを入力し、その後に MySQL データベースのセットアップ時に指定したパスワードを入力し、ENTER を押します。その後、このプロンプトが表示されます。
新しいユーザーを作成するには、以下に示す構文を使用します。
MariaDB [none]> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
たとえば、データベース内に「tecmint」という新しいユーザーを作成するには、次のコマンドを実行します。
MariaDB [none]> CREATE USER 'tecmint'@'localhost' IDENTIFIED BY 'QkYKmw$5tec';
留意すべきいくつかの点
ローカル、つまりMySQL をインストールしたシステムにユーザーを追加する場合、ユーザーのホストは IP アドレスではなく、ローカルホスト として指定されます。キーワード「localhost」は「このコンピュータ」に変換され、MySQL はこれを一意に扱います。基本的に、localhost は、ローカルにインストールされた MySQL データベース サーバーへの接続を確立するために、mysql クライアントによって使用されます。
これまでのところ、tecmint ユーザーにはデータベースと対話する権限がありません。実際、ユーザーは MySQL シェルにアクセスすることさえできません。
テーブルを含むすべてのデータベースへの完全なアクセス権をユーザーに付与するには、次を実行します。
MariaDB [none]> GRANT ALL PRIVILEGES ON * . * TO 'tecmint'@'localhost';
上記のコマンドでは、アスタリスクはユーザーがアクセスできるデータベースとテーブルをそれぞれ指しています。これにより、データベースに対するすべての権限 (読み取り、書き込み、編集、実行など)がユーザーに付与されます。他のデータベースやテーブルにわたるタスクも同様です。
これまでのところ、ユーザーにデータベースへの完全なアクセスを許可しました。これは MySQL の概念を説明するのに便利ですが、データベースにセキュリティ リスクをもたらす可能性があるため、通常はお勧めできません。ハッカーがユーザーのパスワードを入手した場合に何が起こるかを考えてみましょう。さらに進んで、次のセクションで特定の権限を割り当てる方法について説明します。
ユーザーへの権限の割り当てが完了したら、変更を有効にするために、示されているようにすべての権限を再ロードします。
MariaDB [none]> FLUSH PRIVILEGES
さまざまなユーザー権限を付与する方法
ユーザーに付与できる権限の内訳は次のとおりです。
- すべての権限 – 前に説明したように、これにより MySQL ユーザーに特定のデータベースへの完全なアクセス権が付与されます。
- 作成 – ユーザーが新しいデータベースまたはテーブルを作成できるようにします。
- DROP – ユーザーがデータベースまたはユーザーを削除できるようにします。
- INSERT – ユーザーがテーブルに行を挿入できるようにします。
- DELETE – ユーザーがテーブルから行を削除できるようにします。
- SELECT – 「SELECT」権限があれば、ユーザーはテーブルの内容を読み取ることができます。
- UPDATE – ユーザーがテーブル内の行を更新できるようにします。
- 付与オプション – ユーザーは他のユーザーの権限を付与または削除できます。
特定のユーザーに権限を付与するには、次の構文を使用します。
MariaDB [none]> GRANT permission_type ON database_name.table_name TO 'username'@'localhost';
さらに、次のように 1 つのアスタリスク記号を使用して、データベース内のすべてのテーブルにアクセス許可を割り当てることができます。
MariaDB [none]> GRANT permission_type ON database_name.* TO 'username'@'localhost';
たとえば、データベース testdb のすべてのテーブルに対する SELECT 権限を「tecmint」 ユーザーに割り当てるには、次のコマンドを実行します。
MariaDB [none]> GRANT SELECT ON testdb.* TO 'tecmint'@'localhost';
次に、変更を有効にするために権限をフラッシュします。
MariaDB [none]> FLUSH PRIVILEGES;
さらに、図に示すようにカンマで区切ることにより、複数の権限を一度に割り当てることができます。
MariaDB [none]> GRANT INSERT, UPDATE ON testdb.* TO 'tecmint'@'localhost';
MySQL 権限を取り消す方法
ユーザーから権限を取り消すには、次の構文を使用します。
MariaDB [none]> REVOKE permission_type ON database_name.table_name FROM 'username'@'localhost';
たとえば、ユーザー「tecmint」 から INSERT 権限を取り消すには、次のコマンドを実行します。
MariaDB [none]> REVOKE INSERT ON testdb.* FROM tecmint'@'localhost';
MariaDB [none]> FLUSH PRIVILEGES
ユーザーの現在の権限を確認するには、次のコマンドを実行します。
MariaDB [none]> SHOW GRANTS FOR 'username'@'localhost';
以下の出力から、INSERT 権限が「tecmint」 ユーザーから削除され、SELECT と UPDATE だけが残っていることがわかります。 testdb データベースに対する 権限。
新しいユーザーを使用して MySQL シェルへのログインをテストするには、まずログアウトします。
MariaDB [none]> quit;
その後、再度ログインしてください。
sudo mysql -u tecmint -p
ユーザーのパスワードを入力し、ENTER を押してシェルにアクセスします。
ユーザーを削除するには、データベースを削除する場合と同様に、DROP コマンドを使用します。
MariaDB [none]> DROP USER 'username'@'localhost';
次の MySQL 関連記事もお読みください。
- MySQL の一般的なエラーのトラブルシューティングに役立つヒント
- Mytop – Linux で MySQL/MariaDB のパフォーマンスを監視するための便利なツール
- Linux でデフォルトの MySQL/MariaDB ポートを変更する方法
- Linux で MySQL または MariaDB のルートパスワードをリセットする方法
結論
これで、MySQL データベース サーバーにユーザーを作成し、権限を簡単に割り当てたり取り消したりできるようになっていると思います。