使用しているのは、Ubuntu 14.04.1 上の mysql 5.5.43-0 です。
以下の操作を実行できる新しい管理者ユーザー (admin) を作成しようとしています。
- パスワード付きの新しいユーザー (dbuser1) を作成する - (権限「ユーザーの作成」 -> 機能)
- b 新しく作成されたユーザーのパスワードを設定します - (権限「テーブル mysql.user への挿入/更新」 -> 動作します)
- c すべてのテーブルに使用権限を付与 - (GRANT USAGE ON。TO 'dbuser1'@'localhost' IDENTIFIED BY ... -> 動作します)
- d 新しいデータベース(db4user1)を作成 - (権限「create」-> 動作)
- e すべての権限を付与 - (GRANT ALL PRIVILEGES ON
db4user1
.* TO 'dbuser1'@'localhost';) - (管理者への権限付与 -> 機能しません)
ステップ e で問題が発生しました。
Mysql に次のエラーが表示されます: #1044 - ユーザー 'admin'@'localhost' によるデータベース 'db4user1' へのアクセスが拒否されました
質問: 上記のアクションを実行するには、管理者にどのような追加の権限/特権が必要ですか。
私の管理者ユーザーには、既存のユーザーに新しく作成されたデータベースへのアクセス権を付与するためのすべての権限があったと思います...
しかし、それはうまくいきませんでした。
ご協力いただきありがとうございます
ステファン
CREATE USER 'dbuser1'@'localhost' IDENTIFIED BY 'password1234'
SET PASSWORD FOR 'dbuser1'@'localhost' = PASSWORD('password5678')
GRANT USAGE ON *.* TO 'dbuser1'@'localhost' IDENTIFIED BY 'password5678' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
CREATE DATABASE IF NOT EXISTS `db4user1`;
GRANT ALL PRIVILEGES ON `db4user1`.* TO 'dbuser1'@'localhost';
-> #1044 - ユーザー 'admin'@'localhost' によるデータベース 'db4user1' へのアクセスが拒否されました
答え1
default のような別の管理者を作成したいと思われるのでroot
、次のような簡単な構文を使用できます。
GRANT ALL ON *.* TO admin@localhost IDENTIFIED BY 'passwd5678' WITH GRANT OPTION;
答え2
admin
特定のユーザー (ここ) に十分な権限を与えて、特定の DB (ここ) のすべての権限を付与できるようにするための最小要件は次のとおりdb4user1
です。
GRANT DROP ,
REFERENCES ,
INDEX ,
ALTER ,
CREATE TEMPORARY TABLES ,
LOCK TABLES ,
CREATE VIEW ,
EVENT,
TRIGGER,
SHOW VIEW ,
CREATE ROUTINE,
ALTER ROUTINE,
EXECUTE ON `db4user1` . * TO 'admin'@'localhost' WITH GRANT OPTION ;
ほぼすべて...を除外する:
Create
(構造スコープ)Select
、、、(Insert
データ範囲)Update
Delete
ここからは、admin
ユーザーを使用します:
mysql> GRANT ALL PRIVILEGES ON db4user1.* TO 'dbuser1'@'localhost';
Query OK, 0 rows affected (0.00 sec)
これに関するドキュメントは見つからなかったことを認めます。私は過去に、すべての可能性を 1 つずつ排除しながらテストするのに多くの時間を費やしました...