目次:
- あなたが始める前に
- 新しいMySQLデータベースを作成する
- すべてのMySQLデータベースをリストする
- MySQLデータベースを削除する
- 新しいMySQLユーザーアカウントを作成する
- MySQLユーザーアカウントのパスワードを変更する
- すべてのMySQLユーザーアカウントを一覧表示する
- MySQLユーザーアカウントを削除する
- MySQLユーザーアカウントにアクセス許可を付与する
- MySQLユーザーアカウントから権限を取り消す
- MySQLユーザーアカウントの特権を表示する
- 結論
MySQLは、最も人気のあるオープンソースのリレーショナルデータベース管理システムです。 MySQLサーバーでは、多数のユーザーとデータベースを作成し、適切な特権を付与して、ユーザーがデータベースにアクセスして管理できるようにします。
このチュートリアルでは、コマンドラインを使用してMySQLまたはMariaDBのデータベースとユーザーを作成および管理する方法について説明します。
あなたが始める前に
このチュートリアルを開始する前に、システムにMySQLまたはMariaDBサーバーが既にインストールされていることを前提としています。 すべてのコマンドは、rootユーザーとして実行されます。
MySQLプロンプトを開くには、次のコマンドを入力し、プロンプトが表示されたらMySQLルートユーザーパスワードを入力します。
新しいMySQLデータベースを作成する
新しいMySQLデータベースを作成するには、次のコマンドを実行し、database_nameを作成する
database_name
の名前に置き換え
database_name
。
CREATE DATABASE database_name;
Query OK, 1 row affected (0.00 sec)
ERROR 1007 (HY000): Can't create database 'database_name'; database exists
作成しようとしている名前と同じ名前のデータベースが存在する場合のエラーを回避するには、次のコマンドを使用できます。
CREATE DATABASE IF NOT EXISTS database_name;
Query OK, 1 row affected, 1 warning (0.00 sec)
上記の出力では、
Query OK
はクエリが成功したことを意味し、
1 warning
はデータベースが既に存在し、新しいデータベースが作成されなかったことを示しています。
すべてのMySQLデータベースをリストする
次のコマンドを使用して、MySQLまたはMariaDBサーバーに存在するすべてのデータベースを一覧表示できます。
SHOW DATABASES;
出力は次のようになります。
+--------------------+ | Database | +--------------------+ | information_schema | | database_name | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec)
information_schema
、
mysql
、
performance_schema
、および
sys
データベースはインストール時に作成され、他のすべてのデータベース、システム構成、ユーザー、権限、およびその他の重要なデータに関する情報を保存しています。 これらのデータベースは、MySQLインストールの適切な機能に必要です。
MySQLデータベースを削除する
MySQLデータベースの削除は、単一のコマンドを実行するのと同じくらい簡単です。 これは元に戻せないアクションであり、注意して実行する必要があります。 データベースを削除すると回復できないため、間違ったデータベースを削除していないことを確認してください。
MySQLまたはMariaDBを削除するには、データベースで次のコマンドを実行します。
DROP DATABASE database_name;
Query OK, 0 rows affected (0.00 sec)
ERROR 1008 (HY000): Can't drop database 'database_name'; database doesn't exist
このエラーを回避するには、次のコマンドを使用できます。
DROP DATABASE IF EXISTS database_name;
新しいMySQLユーザーアカウントを作成する
MySQLのユーザーアカウントは、ユーザー名とホスト名の部分で構成されます。
新しいMySQLユーザーアカウントを作成するには、次のコマンドを実行し、「database_user」を作成するユーザーの名前に置き換えます。
CREATE USER 'database_user'@'localhost' IDENTIFIED BY 'user_password';
上記のコマンドでは、ホスト名部分を
localhost
設定しました。これは、このユーザーがlocalhost(つまり、MySQLサーバーが実行されているシステム)からのみMySQLサーバーに接続できることを意味します。 別のホストからのアクセスを許可する場合は、リモートマシンのIPで
localhost
を変更するか、ホスト部分に
'%'
ワイルドカードを使用します。これは、ユーザーアカウントが任意のホストから接続できることを意味します。
既に存在するユーザーアカウントを作成する際にエラーを回避するためにデータベースを操作する場合と同じです。
CREATE USER IF NOT EXISTS 'database_user'@'localhost' IDENTIFIED BY 'user_password';
Query OK, 0 rows affected, 1 warning (0.00 sec)
MySQLユーザーアカウントのパスワードを変更する
MySQLまたはMariaDBユーザーアカウントのパスワードを変更するための構文は、システムで実行しているサーバーのバージョンによって異なります。
次のコマンドを発行して、サーバーのバージョンを確認できます。
mysql --version
ALTER USER 'database_user'@'localhost' IDENTIFIED BY 'new_password';
SET PASSWORD FOR 'database_user'@'localhost' = PASSWORD('new_password');
どちらの場合も、出力は次のようになります。
Query OK, 0 rows affected (0.00 sec)
すべてのMySQLユーザーアカウントを一覧表示する
mysql.users
テーブルを照会することにより、すべてのMySQLまたはMariaDBユーザーアカウントを一覧表示
mysql.users
ます。
SELECT user, host FROM mysql.user;
出力は次のようになります。
+------------------+-----------+ | user | host | +------------------+-----------+ | database_user | % | | database_user | localhost | | debian-sys-maint | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+ 6 rows in set (0.00 sec)
MySQLユーザーアカウントを削除する
ユーザーアカウントを削除するには、次のコマンドを使用します。
DROP USER 'database_user@'localhost';
ERROR 1396 (HY000): Operation DROP USER failed for 'database_user'@'localhost'
使用できるエラーを回避するためにデータベースを操作するときと同じです。
DROP USER IF EXISTS 'database_user'@'localhost';
Query OK, 0 rows affected, 1 warning (0.00 sec)
MySQLユーザーアカウントにアクセス許可を付与する
ユーザーアカウントに付与できる特権には複数の種類があります。 MySQLでサポートされている特権の完全なリストは、こちらで確認できます。 このガイドでは、いくつかの例を説明します。
特定のデータベース上のすべての特権をユーザーアカウントに付与するには、次のコマンドを使用します。
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ユーザーアカウントから権限を取り消す
REVOKE ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
MySQLユーザーアカウントの特権を表示する
特定のMySQLユーザーアカウントタイプに付与されている特権を見つけるには:
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データベースとユーザーを管理する方法を学びたい人にとっては良いスタートになるはずです。 また、MySQLルートパスワードを忘れた場合にリセットする方法についてのチュートリアルを確認することもできます。
それで全部です! ご質問やフィードバックがある場合は、お気軽にコメントをお寄せください。
mysql mariadb