すべてのリモート接続を許可する、MySQL
質問
私はこれまで SQL Server を使用していましたが、現在プロジェクトで MySQL を使用しています。SQL Server では、開発者は、ホスト、ユーザー名、パスワードを知っていれば、自分のローカル マシンでリモート データベースに接続することができます。しかし MySQL では、開発者がローカル マシンからアクセスできるようにするには、MySQL にログインして実行する必要がありました。
GRANT ALL ON *.* to user@address IDENTIFIED BY 'password';
flush privileges;
ここで
address
は開発者のマシンの IP アドレスです。もちろん、彼らがネットワークを変更した場合は、私はそれを再度実行する必要があります。SQL Serverで経験したように、すべてのリモート接続を許可する方法があるのでしょうか、それとも何らかの理由でこれがダメなのでしょうか?ユーザー名とパスワードはまだあるのですが・・・。私は明らかに少し混乱しています。
また、これは開発データベースであり、内部ネットワークからのみアクセス可能です。本番用データベースへのアクセスを全員に許可することが悪い考えであることは理解しています。
どのように解決するのですか?
上記のRyanが指摘したように、必要なコマンドは
GRANT ALL ON *.* to user@'%' IDENTIFIED BY 'password';
しかし、ドキュメントによると、これを動作させるためには、別のユーザーアカウントが
localhost
の別のユーザアカウントが同じユーザのために作成されなければならないことに注意してください。
mysql_install_db
で自動的に作成された匿名アカウントは、より具体的なホストカラムを持っているため、そちらが優先されます。
言い換えれば、ユーザ
user
がどのサーバからも接続できるようにするためには、次のように2つのアカウントを作成する必要があります。
GRANT ALL ON *.* to user@localhost IDENTIFIED BY 'password';
GRANT ALL ON *.* to user@'%' IDENTIFIED BY 'password';
完全なドキュメントを読む はこちらです。
そして、参考までに該当箇所を紹介します。
rootでサーバーに接続した後、新しいアカウントを追加することができます。次の 次のステートメントでは、GRANT を使用して 4 つの新しいアカウントをセットアップしています。
mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> WITH GRANT OPTION;
mysql> CREATE USER 'admin'@'localhost';
mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
mysql> CREATE USER 'dummy'@'localhost';
<ブロッククオート
これらのステートメントによって作成されたアカウントは、次のような プロパティを持ちます。
2 つのアカウントには、ユーザー名として monty、パスワードとして some_passです。どちらのアカウントもスーパーユーザアカウントであり、すべての権限を持ち を持つスーパーユーザアカウントです。monty'@'localhost'アカウントは、ローカルホストから接続するときのみ使用できます。 ローカルホストから接続する場合のみ使用できます。monty'@'%'アカウントはホスト部分に'%'を使用します。 を使うので、どのホストからでも接続できます。 を使用します。
montyとしてどこからでも接続できるようにするには、montyの両方のアカウントが必要です。 としてどこからでも接続できるようにするには . ローカルホストのアカウントがないと で作成されるlocalhostの匿名ユーザーアカウントが優先されます。 で作成されたローカルホストの匿名ユーザーアカウントが優先されます。 が優先されます。その結果、montyは匿名ユーザーとして扱われます。 この理由は、anonymous-userアカウントは'monty'カラムよりも具体的な hostカラムの値が'monty'@'%'アカウントよりも具体的であるため、ユーザーテーブルのソート順が先になるからです。 そのため、ユーザーテーブルのソート順が早くなるからです。(ユーザーテーブルのソートについては アクセス制御、ステージ1: 接続検証」 で説明されています)。
関連
-
MySQLのselect、distinct、limitの使い方
-
[解決済み】マルチパート識別子をバインドできませんでした。
-
[解決済み] 親の行を削除または更新できない:外部キー制約が失敗する
-
sql エラーを解決する オペランドには1つの列が含まれている必要があります。
-
[解決済み] Mysqlでidを使用してテーブルから多くの行を削除する
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] MySQLでコマンドラインを使用してユーザーアカウントのリストを取得するにはどうすればよいですか?
-
[解決済み] MySQL mysqlへのリモート接続を許可する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQL演算子(and, or, in, not)の具体的な使用方法
-
MySQL サービスとデータベース管理
-
[解決済み] datetimeの挿入時に文字列から日付や時刻を変換すると、変換に失敗する
-
[解決済み】DynamoDB : 提供されたキー要素がスキーマと一致しません。
-
[解決済み] SQLエラー。ORA-01861:リテラルは、フォーマット文字列01861に一致しません。
-
Djangoマイグレーションエラー 外部キー制約を追加できない
-
mysql がエラーを報告します。不明な文字セットです。'utf8mb4'
-
Mysqlの使用中に発生したエラーの一部
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み] MySQLのリモート接続を有効にします。エラー 1045 (28000)。ユーザーへのアクセスが拒否されました