MySQLで新しいユーザーを作成し、権限を付与する方法

0 株式
0
0
0
0

導入

MySQLはオープンソースのリレーショナルデータベース管理システムです。LAMPスタック(Linux、Apache、MySQL、PHPの略)の一部として広く使用されており、執筆時点では世界で最も普及しているオープンソースデータベースです。このガイドでは、新しいMySQLユーザーを作成し、さまざまな操作を実行するために必要な権限を付与する方法を説明します。.

前提条件

このガイドを実行するには、MySQLデータベースへのアクセスが必要です。このガイドでは、Ubuntu 20.04を実行する仮想プライベートサーバーにデータベースがインストールされていることを前提としていますが、ここで説明する原則は、データベースへのアクセス方法に関係なく適用されます。MySQLデータベースにアクセスできず、自分で設定したい場合は、MySQLのインストール方法に関するガイドのいずれかを参照してください。繰り返しになりますが、サーバーのオペレーティングシステムに関係なく、新しいMySQLユーザーを作成し、権限を付与する手順は通常同じです。.

新しいユーザーを作成する

MySQL をインストールすると、データベースの管理に使用できる root ユーザーアカウントが作成されます。このユーザーは MySQL サーバー上で完全な権限を持ち、すべてのデータベース、テーブル、ユーザーなどを完全に制御できます。そのため、管理機能以外ではこのアカウントを使用しないことをお勧めします。この手順では、MySQL root ユーザーを使用して新しいユーザーアカウントを作成し、権限を付与する方法を説明します。.

MySQL 5.7以降を実行しているUbuntuシステムでは、MySQLのルートユーザーはデフォルトでパスワードではなくauth_socketプラグインを使用して認証されます。このプラグインでは、MySQLクライアントを起動するオペレーティングシステムのユーザー名が、コマンドで指定されたMySQLユーザー名と一致している必要があります。つまり、MySQLのルートユーザーにアクセスするには、mysqlコマンドの前にsudoを付けてUbuntuのルートユーザーの権限で実行する必要があります。

sudo mysql

MySQLのrootユーザーがパスワード認証に設定されている場合、MySQLシェルにアクセスするために別のコマンドを使用する必要があります。以下のコマンドを実行すると、MySQLクライアントが通常のユーザー権限で実行され、正しいパスワードで認証するだけでデータベースの管理者権限を取得できます。

mysql -u root -p

MySQLプロンプトにアクセスしたら、次のフレーズで新しいユーザーを作成できます。 ユーザーを作成 作成します。これらは次の一般的な構文に従います。

CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';

ユーザーを作成 ユーザー名を指定します。その直後に@記号、そしてこのユーザーが接続するホスト名を指定します。Ubuntuサーバーからローカルでのみこのユーザーにアクセスする場合は、localhostと指定できます。ユーザー名とホスト名を引用符で囲む必要は必ずしもありませんが、そうすることでエラーを防ぐことができます。.

ユーザー認証プラグインを選択する際には、いくつかのオプションがあります。プラグイン 認証ソケット 前述の通り、これは認証されたユーザーがデータベースにアクセスする際にパスワードを入力する必要がなく、強力なセキュリティを実現できるため便利です。しかし、リモート接続もブロックするため、外部アプリケーションがMySQLとやり取りする際に複雑な問題が発生する可能性があります。.

代わりに、構文の WITH authentication_plugin 部分を完全に省略して、デフォルトのMySQLプラグインであるcaching_sha2_passwordでユーザー認証を行うこともできます。MySQLのドキュメントでは、強力なセキュリティ機能を備えているため、パスワードでログインしたいユーザーにはこのプラグインを推奨しています。.

caching_sha2_passwordで認証するユーザーを作成するには、次のコマンドを実行します。 サミー 希望するユーザー名とパスワードに強力なパスワードを選択してください:

CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

PHPの一部のバージョンには、caching_sha2_passwordが失敗するという既知の問題があります。このデータベースをPHPアプリケーション(例えばphpMyAdmin)で使用する場合は、古いバージョン(ただし依然として安全)のmysql_native_password拡張機能で認証するユーザーを作成することをお勧めします。

CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

よくわからない場合は、caching_sha2_plugin で認証するユーザーを作成し、次のコマンドで変更できます。

ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

新しいユーザーを作成したら、適切な権限を付与できます。.

ユーザー権限の付与

ユーザー権限を付与するための一般的なコマンドは次のとおりです。

GRANT PRIVILEGE ON database.table TO 'username'@'host';

この例の構文におけるPRIVILEGE値は、指定されたデータベースとテーブルに対してユーザーが実行できる操作を指定します。1つの文で複数の権限を付与するには、各権限をカンマで区切ります。また、データベース名とテーブル名の代わりにアスタリスク(*)を入力することで、ユーザーにグローバル権限を付与することもできます。SQLでは、アスタリスクは「すべての」データベースまたはテーブルを表す特殊文字です。.

例えば、次のコマンドは、データベース、テーブル、ユーザーの作成、変更、削除、およびサーバー上の任意のテーブルへのデータの挿入、更新、削除を行う権限をユーザーに付与します。また、ユーザーは以下のコマンドを使用してデータを照会できます。 選択 検索、キーワードによる外部キー 参考文献 作成と操作 フラッシュ ポイント付き リロード ただし、ユーザーに必要な権限のみを付与する必要があるため、必要に応じてユーザー権限を調整できます。.

利用可能なポイントの全リストは以下でご覧いただけます。 公式MySQLドキュメント 見つけてください。.

Sammy を MySQL ユーザー名に置き換えて、次の GRANT ステートメントを実行し、ユーザーにこれらの権限を付与します。

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

この文にはWITH GRANT OPTIONも含まれていることに注意してください。これにより、MySQLユーザーはシステム上の他のユーザーに自身の権限を付与できるようになります。.

ユーザーによっては、MySQL ユーザーに ALL PRIVILEGES を付与して、次のようなルート ユーザー権限に類似した広範なスーパー ユーザー権限を付与したい場合があります。

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

この MySQL ユーザーにアクセスできるユーザーは誰でも、サーバー上のすべてのデータベースを完全に制御できるため、このような広範な権限は簡単に付与すべきではありません。.

多くのガイドでは、新しい権限が適用されていることを確認するために、CREATE USER または GRANT ステートメントの直後に FLUSH PRIVILEGES コマンドを実行して付与テーブルを再ロードすることを推奨しています。

FLUSH PRIVILEGES;

しかし、 公式MySQLドキュメントGRANTなどのアカウント管理ステートメントを使用して間接的に権限テーブルを変更する場合、データベースは権限テーブルを即座にメモリにロードするため、このケースではFLUSH PRIVILEGESコマンドは必要ありません。また、このコマンドを実行してもシステムに悪影響はありません。.

ライセンスを取り消す必要がある場合、構造はライセンスを付与する場合とほぼ同じです。

REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';

権限を取り消す場合、構文では、 権限を付与する際に使用した から使用。.

コマンドを実行すると ショーグラント ユーザーの現在の権限を確認できます。

SHOW GRANTS FOR 'username'@'host';

データベースを使用できる 落とす 削除するには、 落とす ユーザーを削除するには、次のコマンドを使用します。

DROP USER 'username'@'localhost';

MySQL ユーザーを作成し、権限を与えたら、MySQL を終了できます。

exit

今後、新しい MySQL ユーザーとしてログインするには、次のようなコマンドを使用します。

mysql -u sammy -p

-p を指定すると、MySQL クライアントは認証のために MySQL ユーザー パスワードの入力を求めます。.

結果

このチュートリアルでは、MySQLデータベースに新しいユーザーを追加し、さまざまな権限を付与する方法を学びました。ここから、MySQLユーザーのさまざまな権限設定を試したり、MySQLのより高度な設定についてさらに詳しく学習したりすることができます。.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

あなたも気に入るかもしれない