MySQL での包括的なデータベース権限の付与
データベースを作成してユーザー権限を割り当てるときは、ユーザーが次のことを行うための十分な権限を持っていることを確認することが重要です。データベース内で必要な操作を実行します。ただし、一見包括的な権限を付与しているにもかかわらずテーブルを作成できないなどの問題が発生する可能性があります。
問題の説明:
「mydb」という名前のデータベースが作成されており、 「myuser」という名前のユーザーには次の権限が割り当てられています:
GRANT ALL ON mydb.* TO 'myuser'@'%'; GRANT ALL ON mydb TO 'myuser'@'%'; GRANT CREATE ON mydb TO 'myuser'@'%';
ただし、ユーザーが試行すると、テーブルを作成しようとすると、次のエラー メッセージが表示されます:
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin); ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
解決策:
ユーザー 'myuser' に 'mydb' で必要なすべての権限を付与します。データベースと将来のテーブルを削除するには、次のコマンドを実行する必要があります:
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;
このコマンドは、'myuser' にすべての権限を付与します。 「mydb」データベースに対する権限 (テーブルの作成、変更、削除の権限を含む)。 WITH GRANT OPTION 句を使用すると、ユーザーはこれらの権限を他のユーザーに譲渡できます。
重要な注意事項:
このソリューションはアクセスの問題に効果的に対処しますが、考慮することが重要です。 WITH GRANT OPTION 権限を付与することによるセキュリティへの影響。この権限により、ユーザーは他のユーザーの権限を変更できます。セキュリティ上の理由から、特定のタスクに必要なデータベース権限のみを持つ専用のユーザー アカウントを使用することをお勧めします。
以上がCREATE テーブル エラーを回避するために、MySQL で包括的なデータベース権限を適切に付与するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。