目次:
- あなたが始める前に
- 新しいMySQLユーザーアカウントを作成する
- MySQLユーザーアカウントに特権を付与する
- MySQLユーザーアカウント権限の表示
- MySQLユーザーアカウントから特権を取り消す
- 既存のMySQLユーザーアカウントを削除する
- 結論
MySQLは、最も人気のあるオープンソースのリレーショナルデータベース管理システムです。 MySQLサーバーでは、ユーザーがデータベースにアクセスして管理できるように、多数のユーザーアカウントを作成し、適切な特権を付与できます。
このチュートリアルでは、MySQLユーザーアカウントを作成し、権限を付与する方法について説明します。
あなたが始める前に
MySQLまたはMariaDBサーバーがシステムにインストールされていることを前提としています。
すべてのコマンドは、rootまたは管理ユーザーとしてMySQLシェル内で実行されます。 ユーザーアカウントを作成し、それらの特権を定義するために必要な最小限の特権は
CREATE USER
および
GRANT
です。
MySQLシェルにアクセスするには、次のコマンドを入力し、プロンプトが表示されたらMySQLルートユーザーのパスワードを入力します。
新しいMySQLユーザーアカウントを作成する
MySQLのユーザーアカウントは、ユーザー名とホスト名の部分で構成されます。
新しいMySQLユーザーアカウントを作成するには、次のコマンドを実行します。
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';
プレースホルダー値
newuser
を目的の新しいユーザー名に置き換え、プレースホルダー値
newuser
をユーザーパスワードに
user_password
ます。
上記のコマンドでは、ホスト名の部分が
localhost
に設定されています。つまり、ユーザーはlocalhost(つまり、MySQLサーバーが実行されているシステム)からのみMySQLサーバーに接続できます。
別のホストからのアクセスを許可するには、ホスト名の部分(
localhost
)をリモートマシンのIPで変更します。 たとえば、IP
10.8.0.5
マシンからのアクセスを許可するには、次を実行します。
CREATE USER 'newuser'@'10.8.0.5' IDENTIFIED BY 'user_password';
任意のホストから接続できるユーザーを作成するには、
'%'
ワイルドカードをホスト部分として使用します。
CREATE USER 'newuser'@'%' IDENTIFIED BY 'user_password';
MySQLユーザーアカウントに特権を付与する
ユーザーアカウントに付与できる特権には複数の種類があります。 MySQLでサポートされている特権の完全なリストは、こちらで確認できます。
最も一般的に使用される権限は次のとおりです。
-
ALL PRIVILEGES
–すべての特権をユーザーアカウントに付与します。CREATE
–ユーザーアカウントはデータベースとテーブルを作成できます。DROP
ユーザーアカウントはデータベースとテーブルを削除できます。DELETE
ユーザーアカウントは、特定のテーブルから行を削除できます。INSERT
ユーザーアカウントは特定のテーブルに行を挿入できます。SELECT
–ユーザーアカウントはデータベースを読み取ることができます。UPDATE
ユーザーアカウントはテーブル行を更新できます。
ユーザーアカウントに特定の特権を付与するには、次の構文を使用できます。
GRANT permission1, permission2 ON database_name.table_name TO 'database_user'@'localhost';
ここではいくつかの例を示します。
-
特定のデータベースに対するユーザーアカウントへのすべての特権を付与します。
GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
すべてのデータベースのユーザーアカウントにすべての特権を付与します。
GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';
データベースの特定のテーブルに対するユーザーアカウントへのすべての特権を付与します。
GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';
特定のデータベース上のユーザーアカウントに複数の権限を付与します。
GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';
MySQLユーザーアカウント権限の表示
特定のMySQLユーザーアカウントに付与されている特権を見つけるには、
SHOW GRANTS
ステートメントを使用します。
SHOW GRANTS FOR 'database_user'@'localhost';
+---------------------------------------------------------------------------+ | Grants for database_user@localhost | +---------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'database_user'@'localhost' | | GRANT ALL PRIVILEGES ON `database_name`.* TO 'database_user'@'localhost' | +---------------------------------------------------------------------------+ 2 rows in set (0.00 sec)
MySQLユーザーアカウントから特権を取り消す
ユーザーアカウントから1つ以上の特権を取り消す構文は、特権を付与する場合とほぼ同じです。
たとえば、特定のデータベースに対するユーザーアカウントからすべての特権を取り消すには、次のコマンドを使用します。
REVOKE ALL PRIVILEGES ON database_name.* FROM 'database_user'@'localhost';
既存のMySQLユーザーアカウントを削除する
MySQLユーザーアカウントを削除するには、
DROP USER
ステートメントを使用します。
DROP USER 'user'@'localhost'
上記のコマンドは、ユーザーアカウントとその特権を削除します。
結論
このチュートリアルでは基本事項のみを説明しますが、新しいMySQLユーザーアカウントの作成方法と権限の付与方法を学びたい人にとっては良い出発点になります。
mysql mariadb