私はデータベースを作成しました、例えば '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;
これが私が自分の "スーパーユーザー"特権を作成する方法です(私は通常ホストを指定しますが)。
この回答はアクセスの問題を解決することができますが、WITH GRANT OPTION
は 他のユーザーのアクセス許可を編集 できるMySQLユーザーを作成します。
GRANT OPTION権限を使用すると、自分が所有している権限を他のユーザーに付与したり、他のユーザーから削除したりできます。
セキュリティ上の理由から、一般の人がアクセスするすべてのプロセス(Webサイトなど)にこの種のユーザーアカウントを使用しないでください。そのような用途には データベース特権のみを持つユーザーを作成 _することをお勧めします。
これは古い質問ですが、受け入れられた答えが安全であるとは思いません。スーパーユーザーの作成には適していますが、単一のデータベースに対する特権を付与したい場合には適していません。
grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';
%
はソケット通信をカバーしていないようです、localhost
はそのためです。 WITH GRANT OPTION
はスーパーユーザーにのみ有効です。それ以外の場合は通常セキュリティ上のリスクです。
お役に立てれば。
これは何人かの人々にとって役に立つでしょう:
MySQLのコマンドラインから:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
残念ながら、現時点ではnewuserはデータベースに対して何かをする権限を持っていません。実際、newuserが(パスワード、パスワードを使用して)ログインしようとしても、MySQLシェルにアクセスすることはできません。
したがって、最初に行うことは、ユーザーに必要な情報へのアクセスをユーザーに提供することです。
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
このコマンドのアスタリスクは、それぞれアクセスできるデータベースとテーブルを表します。この特定のコマンドを使用すると、ユーザーはすべてのデータベースとテーブルですべてのタスクを読み取り、編集、実行、実行できます。
新しいユーザーに設定する権限を確定したら、必ずすべての権限をリロードしてください。
FLUSH PRIVILEGES;
変更が有効になります。
詳細情報: http://dev.mysql.com/doc/refman/5.6/en/grant.html
コマンドラインに慣れていない場合は、 MySQL workbench 、 Navicat または SQLyog のようなクライアントを使用できます。
1.データベースを作成する
CREATE DATABASE db_name;
2.データベースdb_nameのユーザー名を作成します。
GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' IDENTIFIED BY 'password';
3.データベースを利用する
USE db_name;
4.最後に、データベースdb_nameに入り、作成、選択、挿入などのコマンドを実行します。
このSQLはすべてのデータベースに付与しますが、基本的な権限だけにします。 DrupalやWordpressにはこれで十分で、そのおかげで1つの開発者アカウントでローカルプロジェクトを実行できます。
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP,
INDEX, ALTER, CREATE TEMPORARY TABLES
ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY 'mypasswd';
スキーマに対する権限で動作します:)
オプション:mypasswd
の後にWITH GRANT OPTION
を追加できます
こんにちは私はmysqlでスーパーユーザーを持つためにこのコードを使用
GRANT EXECUTE, PROCESS, SELECT, SHOW DATABASES, SHOW VIEW, ALTER, ALTER ROUTINE,
CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP,
EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, CREATE USER, FILE,
LOCK TABLES, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SHUTDOWN,
SUPER
ON *.* TO mysql@'%'
WITH GRANT OPTION;
その後
FLUSH PRIVILEGES;
私はGRANT OPTION
を追加することによってのみそれを動作させることができました、それなしでそれは常に許可拒否エラーを受け取ります
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' WITH GRANT OPTION;
リモートサーバーからmydbデータベースのみにアクセスする
GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'192.168.2.21';
リモートサーバーからすべてのデータベースにアクセスする。
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.2.21';
データベースmydb
に対するすべての権限をユーザーmyuser
に付与するには、次のコマンドを実行するだけです。
GRANT ALL ON mydb.* TO 'myuser'@'localhost';
または
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
PRIVILEGES
キーワードは必要ありません。
また、他の答えがIDENTIFIED BY 'password'
をコマンドの最後に置くことを示唆している理由もわかりません。必須ではないと思います。