この記事では、MySQL®データベースの権限について説明しています。また、新しいユーザーを作成し、権限を付与または取り消す方法についても説明します。
MySQLコマンドの使用
以下は、MySQLコマンドに関する役立つ提案です。
MySQLコマンドを大文字で入力する必要はありません。次のコマンドはどちらも同じように機能します。
CREATE USER ‘username’@’localhost’ IDENTIFIED BY ‘password’;
create user ‘username’@’localhost’ identified by ‘password’;
ただし、大文字を使用すると、コマンド構文をコマンドのデータまたは変数要素から分離するのに役立ちます。
localhostパラメーター
また、localhost
を変更することもできます 要素。これにより、ユーザーは現在使用しているコンピューターからデータベースにアクセスできます。ユーザーがどこからでもデータベースにアクセスできるようにする場合は、%
を使用します localhost
の代わりにsymbol 。ユーザーが特定のIPアドレスからデータベースにログインできるようにする場合は、代わりにそのIPアドレスを挿入します。例:username’@’22.111.000.34
。
したがって、次のコマンドのいずれかを使用してユーザーを作成できます。
CREATE USER'username' @'localhost' IDENTIFIED BY'password'; CREATE USER'username' @'%' IDENTIFIED BY'password'; CREATE USER'username' @ '22 .111.000.34' IDENTIFIED BY'password';
>
注: ユーザーが2つの特定の場所からデータベースにアクセスできるようにし、それらの場所のみにアクセスできるようにする場合は、ユーザーを2回作成する必要があります。たとえば、ユーザーが現在使用しているコンピューターと特定のIPアドレスからデータベースにログインできるようにしたいとします。まず、localhost
を使用してユーザーを作成します コマンド内の場所。次に、特定のIPアドレスを使用してユーザーを再作成します。
一般的な権限には次のものがあります:
-
すべての特権 :ユーザーに指定されたデータベースへのフルアクセスを許可するか、データベースを指定しない場合はシステム全体へのグローバルアクセスを許可します。この権限には、 GRANTを除く次のすべての権限が含まれます 。
-
作成 :ユーザーが新しいテーブルまたはデータベースを作成できるようにします。
-
ドロップ :ユーザーがテーブルまたはデータベースを削除できるようにします。
-
削除 :ユーザーがテーブルから行を削除できるようにします。
-
挿入 :ユーザーがテーブルに行を挿入できるようにします。
-
選択 :指定されたデータベースに読み取り専用権限をユーザーに付与します。
-
更新 :ユーザーがテーブルの行を更新できるようにします。
-
ロックテーブル :ユーザーがテーブルをロックできるようにします。
-
データベースを表示 :ユーザーがすべてのデータベースを一覧表示できるようにします。
-
付与オプション :ユーザーが他のユーザーの権限を付与または削除できるようにします。この許可を明示的に付与する必要があります。
次のコマンドを使用して、rootユーザーとしてMySQLにログインします。
mysql -u root -p
システムは、サーバー自体のルートパスワードとは異なるMySQLのルートパスワードの入力を求めます。
注: サーバーでsudo権限を持っている場合は、MySQLのrootパスワードが〜/.my.cnfにある可能性があります。 rootユーザーとしてのファイル。
rootとしてMySQLにログインしたので、ユーザーを作成できます。好きなユーザー名を選択してください。username
の代わりに次のコマンドを入力してください およびpassword
選択したユーザー名とパスワードを使用:
CREATE USER ‘username’@’localhost’ IDENTIFIED BY ‘password’;
成功すると、システムはクエリOKを表示します 。
次の形式を使用して、MySQLでユーザー権限を付与します。
GRANT permission1, permission2, permission3 ON databasename.tablename TO ‘newuser’@’localhost’;
データベース上のすべてのテーブルへのアクセスをユーザーに許可するだけの場合は、databasename.*
を使用します。 databasename.tablename
の代わりに 。同様に、すべてのデータベースのすべてのテーブルに対する特定の権限セットをユーザーに付与する場合は、*.*
を使用します。 。
特権の付与の例:
GRANT ALL PRIVILEGES ON databasename.* TO ‘newuser’@’%’;
GRANT ALL PRIVILEGES, GRANT OPTION ON *.* TO ‘newuser’@’22.111.000.34’;
GRANT SELECT, SHOW DATABASES, LOCK TABLES ON databasename.* TO ‘newuser’@’localhost’;
ユーザーの権限を取り消す必要がある場合は、次の形式を使用してください。
REMOVE permission1, permission2, permission3 ON databasename.* FROM ‘newuser’@’localhost’;
ユーザーが持っている特権を確認するには、次のコマンドを使用します。
SHOW GRANTS newuser;
ユーザーを作成したり、特権を付与したり、特権を取り消したりした後、次のコマンドを実行します。
FLUSH PRIVILEGES;
このコマンドは、新しいユーザーと特権が含まれているテーブルを再ロードします。変更を保存することと考えてください。
変更が完了したら、次のコマンドを使用してMySQLを安全に終了します。
EXIT;