MySQL: データベースの**すべての**権限を付与する 質問する

MySQL: データベースの**すべての**権限を付与する 質問する

たとえば「mydb」というデータベースを作成しました。

CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;

今ではどこからでもデータベースにログインできますが、テーブルを作成することはできません。

そのデータベースと (将来的には) テーブルにすべての権限を付与する方法。 'mydb' データベースにテーブルを作成できません。常に次のエラーが発生します:

CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'

ベストアンサー1

GRANT ALL PRIVILEGES
ON mydb.*
TO 'myuser'@'%'
WITH GRANT OPTION;

これは私が「スーパー ユーザー」権限を作成する方法です (ただし、通常はホストを指定します)。

重要な注意点

この回答はアクセスの問題を解決できますが、WITH GRANT OPTIONMySQLユーザーを作成して他のユーザーの権限を編集する

GRANT OPTION 権限を使用すると、自分が所有する権限を他のユーザーに付与したり、他のユーザーから削除したりすることができます。

セキュリティ上の理由から、このタイプのユーザーアカウントは、一般の人がアクセスできるプロセス(Webサイトなど)には使用しないでください。データベース権限のみを持つユーザーを作成するそのような用途のためです。

おすすめ記事