はじめに

MySQLはオープンソースのデータベース管理ソフトウェアで、ユーザーがデータを保存、整理し、後で取得するのに役立ちます。特定のユーザーに、テーブルやデータベース内で特別な意味合いを持つ権限を付与するさまざまなオプションがあります。このチュートリアルでは、いくつかのオプションの概要を説明します。

<^>ハイライト表示<^>が意味するもの

このチュートリアル全体を通して、ユーザーが入力またはカスタマイズする必要がある部分は <^>ハイライト表示<^>されます。残りの部分は、ほとんどコピー&ペーストができるようになっています。

新しいユーザーの作成方法

mysql illustration for: 新しいユーザーの作成方法

MySQLのチュートリアルのパート1では、すべてのデータベースへのフルアクセス権を持つrootユーザーとして、MySQLでのすべての編集を行いました。ただし、さらに制限が必要な場合は、カスタム権限を持つユーザーを作成する方法があります。

まず、MySQLシェル内で新しいユーザーを作成してみましょう。

				
					
CREATE USER '&lt;^&gt;newuser&lt;^&gt;'@'localhost' IDENTIFIED BY '&lt;^&gt;password&lt;^&gt;';

				
			

注: このチュートリアルでMySQLシェル内にユーザーを追加する場合、ユーザーのホストをサーバーのIPアドレスではなく、localhostとして指定します 。localhostは「このコンピューター」を意味するホスト名で、MySQLはこの特定のホスト名を特別に扱います。 そのホストを持つユーザーがMySQLにログインすると、Unixソケットファイルを使用してローカルサーバーに接続しようとします。したがって、通常、サーバーにSSHで接続する場合、またはローカルmysqlクライアントを実行してローカルMySQLサーバーに接続する場合に、localhostが使用されます。

この時点では<^>newuser<^>は、データベースを操作する権限はありません。実際、<^>newuser<^>が(<^>password<^>のパスワードを使用して)ログインしようとしても、MySQLシェルにアクセスできません。

したがって、最初に行うことは、ユーザーに必要な情報へのアクセスを提供することです。

				
					
GRANT ALL PRIVILEGES ON * . * TO '&lt;^&gt;newuser&lt;^&gt;'@'localhost';

				
			

このコマンドのアスタリスクは、(それぞれ)アクセスできるデータベースとテーブルを示しています。この特定のコマンドを使用すると、ユーザーはすべてのデータベースとテーブルですべてのタスクの読み取り、編集、実行を行うことができます。

この例では、<^>newuser<^>に、データベース内のすべてへのrootのフルアクセス権を付与していることに注意してください。これはMySQLの概念を説明するのに役立ちますが、ほとんどのユースケースでは実用的ではなく、データベースのセキュリティを危険にさらす可能性があります。

新しいユーザーに設定する権限を確定したら、必ずすべての権限をリロードしてください。

				
					
FLUSH PRIVILEGES;

				
			

これで、変更が有効になります。

さまざまなユーザー権限を付与する方法

ユーザーが使用できるその他の一般的なアクセス権限一覧を次に示します。

  • ALL PRIVILEGES-前述したように、MySQLユーザーは指定されたデータベースへフルアクセスができます(または、データベースが選択されていない場合は、システム全体のグローバルアクセスができます)。
  • CREATE – 新しいテーブルまたはデータベースを作成できます。
  • DROP – テーブルまたはデータベースを削除できます。
  • DELETE – テーブルから行を削除できます。
  • INSERT – テーブルに行を挿入できます。
  • SELECT – SELECTコマンドを使用してデータベースを読み取ることができます。
  • UPDATE – テーブルの行を更新できます。
  • GRANT OPTION – 他のユーザーの権限の付与または削除ができます。

特定のユーザーに権限を付与する場合は、次のフレームワークを使用できます。

				
					
GRANT &lt;^&gt;type_of_permission&lt;^&gt; ON &lt;^&gt;database_name&lt;^&gt;.&lt;^&gt;table_name&lt;^&gt; TO '&lt;^&gt;username&lt;^&gt;'@'localhost';

				
			

任意のデータベースまたは任意のテーブルへのアクセスを許可する場合は、データベース名またはテーブル名の代わりにアスタリスク(*)を入力してください。

権限を更新または変更するたびに、必ずFlush Privilegesコマンドを使用してください。

権限を取り消す必要がある場合、構文の構造は権限の付与とほぼ同じです。

				
					
REVOKE &lt;^&gt;type_of_permission&lt;^&gt; ON &lt;^&gt;database_name&lt;^&gt;.&lt;^&gt;table_name&lt;^&gt; FROM '&lt;^&gt;username&lt;^&gt;'@'localhost';

				
			

権限を取り消す場合の構文は、権限を付与するときに使用したTOではなく、FROMを使用する必要があることに注意してください。

次のコマンドを実行して、ユーザーの現在の権限を確認できます。

				
					
SHOW GRANTS FOR '&lt;^&gt;username&lt;^&gt;'@'localhost';

				
			

DROPを使用してデータベースを削除する場合と同様に、DROPを使用してユーザーを完全に削除できます。

				
					
DROP USER '&lt;^&gt;username&lt;^&gt;'@'localhost';

				
			

新しいユーザーをテストするには、次のように入力してログアウトします。

				
					
quit

				
			

ターミナルで次のコマンドを使用して、再度ログインします。

				
					
mysql -u [username] -p

				
			

まとめ

このチュートリアルを終了すると、MySQLデータベースで新しいユーザーを追加し、さまざまな権限を付与する方法が理解できます。ここから、データベースのさまざまなアクセス許可設定を調べて試してみたり、さらに高度なMySQL設定について詳しく学習することもできます。

MySQLの基本について詳しくは、次のチュートリアルを参照してください。