このチュートリアルでは、MySQLに新しいユーザーを追加し、MySQLデータベースにさまざまな種類の権限を付与します。
MySQLサーバーを使用すると、ユーザーがデータベースにアクセスして管理できるように、多数のユーザーアカウントを作成し、適切な権限を付与できます。サーバーにMySQLをインストールしたら、データベースと追加のユーザーアカウントを作成する必要があります。
次のコマンドを実行するには、最初にMySQLrootアカウントでMySQLサーバーにログインする必要があります。
mysql -u root -p
CREATE USER
ステートメントは、MySQLデータベースサーバーに新しいユーザーを作成します。 ステートメントの基本的な構文は次のとおりです。
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
上記の構文では、必ずユーザー名を置き換えてください。 およびパスワード ご希望のユーザー名とパスワードを使用してください。
hostname
を設定します localhost
へ ユーザーがローカルホスト(「このコンピューター」を意味する)からのみMySQLサーバーに接続できるようにする場合。ユーザーが任意のホストから接続できるようにする場合は、%
を使用します ホスト名としてのワイルドカード。
たとえば、james
という名前のユーザーを作成します 、およびパスワードMyStrongPass123
次のコマンドを使用します:
CREATE USER 'james'@'localhost' IDENTIFIED BY 'MyStrongPass123';
ただし、このユーザーは、追加の権限が付与されるまで、どのMySQLデータベースも操作できません。
MySQLユーザーに権限を付与する方法
新しいユーザーを正常に作成した直後に、この新しいユーザーに特権を付与できます。ほとんどの場合、アカウントがアクセスする必要のある特定のデータベースに基づいて、MySQLユーザーに権限を付与します。
ユーザーアカウントに付与できる特権には複数の種類があります。 MySQLでサポートされている特権の完全なリストはここにあります。
ALL PRIVILEGES
–ユーザーアカウントにすべての権限を付与します。-
ALTER
–ユーザーはテーブルまたはデータベースの構造を変更できます。 -
CREATE
–ユーザーアカウントはデータベースとテーブルを作成できます。 -
DROP
–ユーザーアカウントはデータベースとテーブルを削除できます。 -
DELETE
–ユーザーアカウントは特定のテーブルから行を削除できます。 -
INSERT
–ユーザーアカウントは、特定のテーブルに行を挿入できます。 -
SELECT
–ユーザーアカウントはデータベースの読み取りを許可されています。 -
UPDATE
–ユーザーアカウントはテーブル行を更新できます。
ユーザーにMySQLデータベースへのアクセスを提供し、権限を付与するには、通常、次のGRANT
を使用する必要があります。 ステートメント:
GRANT permission_type ON privilege_level TO 'username'@'hostname';
ユーザーにすべての特権を付与するにはjames
jamesdb
で データベースの場合は、次のコマンドを使用します:
GRANT ALL PRIVILEGES ON jamesdb.* TO 'james'@'localhost';
次のように入力して、SELECT
のみを付与します およびINSERT
ユーザーへの特権james
jamesdb
で データベース:
GRANT SELECT, INSERT ON jamesdb.* TO 'james'@'localhost';
グランドSELECT
ユーザーへの特権james
salaries
のみ employees
の表 データベース:
GRANT SELECT ON employees.salaries TO 'james'@'localhost';
場合によっては、別の「スーパーユーザー」を作成することもできます。 MySQLルートユーザーと同じ権限を持つユーザーを付与するには 、次のコマンドを使用して、ユーザーにグローバル権限を付与します james localhost経由で接続する :
GRANT ALL ON *.* TO 'james'@'localhost' WITH GRANT OPTION;
MySQLユーザーアカウントのパスワードを変更する
james
のパスワードを変更するとします。 localhost
から接続するユーザー NewStrongPass123
へ 、次のSQLステートメントを実行する必要があります:
ALTER USER 'james'@'localhost' IDENTIFIED BY 'NewStrongPass123';
上記のSQLステートメントでは、必ずjames
を変更してください。 データベースユーザーとlocalhost
ユーザーのホストと。
Show MySQLのユーザーの権限
MySQLでは、SHOW GRANTS
を使用できます ユーザーのすべての付与情報を表示するコマンド。いくつか例を見てみましょう。
次のステートメントでは、SHOW GRANTS
を使用しています 現在のユーザーに付与されている特権を表示するステートメント:
SHOW GRANTS;
MySQLユーザーの助成金を表示するには、SHOW GRANTS
を使用できます ユーザー名を指定している間:
SHOW GRANTS FOR 'james'@'localhost';
MySQLユーザーアカウントから権限を取り消す
ユーザーアカウントから1つ以上の特権を取り消すための構文は、特権を付与する場合とほとんど同じです。
ユーザーから特権を取り消す必要がある場合james
jamesdb
で データベースで、権限を付与するときに使用したものと同様の構文を適用します。
REVOKE ALL PRIVILEGES ON jamesdb.* FROM 'james'@'localhost';
MySQLからユーザーを削除
特権を取り消す代わりに、そのユーザーも削除することをお勧めします。したがって、次のコマンドを使用してデータベースユーザーを削除できます。
DROP USER 'james'@'localhost';
上記のコマンドは、ユーザーのjames
を削除します そのすべての特権と一緒に。
最後のステップとして、権限を更新または変更するたびに、必ずFLUSH PRIVILEGES
を使用してください。 コマンド。
FLUSH PRIVILEGES;
このチュートリアルを完了すると、新しいユーザーを追加し、MySQLデータベースでさまざまな権限を付与する方法を理解する必要があります。
ご質問やご意見がございましたら、お気軽にコメントをお寄せください。