Tutorial

MySQLで新しいユーザーを作成して権限を付与する方法

Published on November 23, 2020
日本語
MySQLで新しいユーザーを作成して権限を付与する方法

はじめに

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

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

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

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

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

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

  1. CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

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

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

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

  1. GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

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

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

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

  1. FLUSH PRIVILEGES;

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

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

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

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

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

  1. GRANT type_of_permission ON database_name.table_name TO 'username'@'localhost';

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

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

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

  1. REVOKE type_of_permission ON database_name.table_name FROM 'username'@'localhost';

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

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

  1. SHOW GRANTS FOR 'username'@'localhost';

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

  1. DROP USER 'username'@'localhost';

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

  1. quit

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

  1. mysql -u [username] -p

まとめ

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

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

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel