MySQLのユーザーにデータベース作成特権を付与する方法


11

次のコマンドは、ユーザー「admin」にすべてのデータベースのすべての権限を提供します。ただし、「admin」がデータベースを作成することはできません。

GRANT ALL ON * . * TO 'admin'@'localhost'; 

「admin」がデータベースを作成するためのアクセスを提供するにはどうすればよいですか?

データベースを作成しようとすると、次のエラーが発生します-

エラー1044(42000):データベース 'newdb'へのユーザー 'admin' @ 'localhost'のアクセスが拒否されました


使用しましたGRANT ALL ON *.* TO 'admin'@'localhost';か?あなたの例では、を実行したと言いますGRANT ALL ON * . * TO 'admin'@'hostname';が、hostnameとは異なるホストですlocalhost
oNare

ホスト名は「localhost」です。
Abhishek

それを実行したときに「ルート」として接続しましたGRANTか?
リックジェームズ

はい。そのGRANTを実行すると、「ルート」として接続されました。
Abhishek

flush privileges;rootとして試しましたか?
dwjv

回答:


5

すべての権限には、「付与オプション」を除くすべての権限が含まれます...したがって、上記のコマンドを使用すると、管理ユーザーもデータベースを作成できます。

発生しているエラーを表示したい場合があります。上記のGRANTでは、adminユーザーのパスワードも指定していないことに注意してください。

更新:

次のことができるはずです。

rootとしてログインし、ユーザーを作成します。

$] mysql -uroot -p
mysql> grant all privileges on *.* to 'admin'@'localhost';

管理者としてログイン(パスワードなし):

$] mysql -uadmin -p
mysql> create database admin;

ログインすると、次のように権限を確認できます。

mysql> show grants;

または

mysql> show grants for current_user();

mysql> select current_user() ログインしたユーザーが表示されます。


質問にエラーを追加しました。
Abhishek

@abhishek update answer ....ところで、上記のエラーの原因となっているコマンドは何ですか?ユーザーにどのような権限があるか確認してください。管理ユーザーとして接続していますか?
mysql_user 2015

はい、管理者ユーザーとして接続していることを100%確信しています。
Abhishek

mysql>は許可を表示します。+ ------------------------------------------------- ---------------------------- + | admin @ localhostの許可| + ------------------------------------------------- ---------------------------- + | ONのGRANT USAGE 'admin' @ 'localhost'には、パスワード<secret>で識別されます。| すべての特権をnewdb。*に付与するには'admin' @ 'localhost'に| + ------------------------------------------------- ---------------------------- + 2行セット(0.00秒)
Abhishek

すべての特権はmbdbにのみあることに注意してください...したがって、他のデータベースを操作することはできません!
mysql_user

0

新しいユーザーには、データベースを操作する権限がありません。実際、新しいユーザーが(パスワード、パスワードを使用して)ログインしようとしても、MySQLシェルにアクセスできません。

したがって、ユーザーにアクセス権を提供する必要があります

GRANT ALL PRIVILEGES ON * . * TO 'admin'@'localhost'; 

このコマンドのアスタリスクは、アクセスできるデータベースとテーブルを(それぞれ)参照します。この特定のコマンドにより、ユーザーはすべてのデータベースとテーブルにわたってすべてのタスクを読み取り、編集、実行、実行できます。

新しいユーザーに設定する権限を確定したら、必ずすべての権限を再ロードしてください。

FLUSH PRIVILEGES;

これで、すべての変更が有効になります。


GRANTコマンドにはフラッシュ特権は必要ありません。
mysql_user

はい。同意し​​ます。ただし、INSERT、UPDATE、DELETEなどのステートメントを使用してテーブルの権限を直接変更する場合は、FLUSH PRIVILAGESが必要です...ありがとう@mysql_user
Mathew
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.