1. ホーム
  2. mysql

[解決済み] MySQLの データベースへの **all** 特権付与

2022-03-15 19:07:52

質問

データベース(例: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'

解決方法は?

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

これは、私の "Super User" 権限を作成する方法です(通常はホストを指定するのでしょうが)。

重要な注意事項

この回答でアクセスに関する問題は解決できるものの WITH GRANT OPTION が可能な MySQL ユーザーを作成します。 他のユーザーのパーミッションを編集する .

<ブロッククオート

GRANT OPTION権限を使用すると、自分自身が持っている権限を他のユーザーに与えたり、他のユーザーから削除したりすることができます。

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