アンドロイド

コマンドラインからmysqlデータベースとユーザーを管理する方法

目次:

Anonim

MySQLは、最も人気のあるオープンソースのリレーショナルデータベース管理システムです。 MySQLサーバーでは、多数のユーザーとデータベースを作成し、適切な特権を付与して、ユーザーがデータベースにアクセスして管理できるようにします。

このチュートリアルでは、コマンドラインを使用してMySQLまたはMariaDBのデータベースとユーザーを作成および管理する方法について説明します。

あなたが始める前に

このチュートリアルを開始する前に、システムにMySQLまたはMariaDBサーバーが既にインストールされていることを前提としています。 すべてのコマンドは、rootユーザーとして実行されます。

MySQLプロンプトを開くには、次のコマンドを入力し、プロンプトが表示されたらMySQLルートユーザーパスワードを入力します。

mysql -u root -p

新しい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