ホストアドレスをIPアドレス203.199.209。**として使用してデータベースに接続しようとしましたが、ホストアドレスをローカルホストとして使用してデータベースに接続しようとすると、正常に接続されました。この問題を解決するにはどうすればよいですか?
2 に答える
MySQLは、接続元のホストに基づいてアクセスを許可します。
このコマンドを次のように実行しますroot
。
SELECT user, host FROM mysql.user;
これらは、サーバーに存在するユーザーです。host
列に注意してください。
つまり、ユーザーはユーザー名(user
)と接続ポイント()の両方として定義されますhost
。としてサーバーにアクセスするとlocalhost
、実際にはとしてログインしsome_user@localhost
ます。一方、IPアドレスを介してサーバーにアクセスする場合、実際にはとしてログインしますsome_user@your.ip.address.here
。後者はあなたのサーバーには存在しないと思います。
some_user@your.ip.address.here
またはなどの新しいユーザーを作成することもできますsome_user@%
(パーセント記号はワイルドカードです。ここでは、「任意のホスト」を意味します)。
CREATE USER 'some_user'@'your.ip.address.here' IDENTIFIED BY 'your_password';
GRANT ALL ON your_database.* to 'some_user'@'your.ip.address.here';
さらに詳しく知りたい場合は、MySQLアクセス制御の詳細についてはこのマニュアルページを、構文についてはこのページを参照してください。CREATE USER
[編集]
明らかに、他の人が示唆しているように、最初にサーバーがこのIPアドレス(203.199.209。**)をリッスンしていることを確認する必要があります。ただし、これがまだ当てはまらない場合は、次のエラーが発生するはずです。
エラー2003(HY000):「203.199.209。**」でMySQLサーバーに接続できません(111)
発生しているエラーは、許可の問題を明確に示しています。
mysql-5.7.15-winx64(Windowsバージョン)の場合、「root」ユーザーとしてログインし、MYSQLで次のクエリを実行します。
CREATE USER 'user'@'localhost' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
CREATE USER 'user'@'%' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
次に、MYSQLDBを再起動します。
このバージョンのMYSQLDBでは、「bin」フォルダと同じ場所にある「my-default.ini」を変更する必要はありません。