1

重複の可能性:
PHPを使用してリモートMySQLサーバーに接続する

コードがMySQLのあるサーバー上にあるときに、ローカルホストを使用してデータベースに正常に接続できます。

同じMySQLサーバーに接続したいのですが、別のIPから接続します。

mysql_connect("localhost","root","<password>");
mysql_select_db("db name");

しかし、私の新しいIPは12.123.123.12だと言ってください

私は試した:

mysql_connect("12.123.123.12","root","<password>");
mysql_select_db("db name");

私は何が間違っているのですか?

4

4 に答える 4

3
SELECT User, Host, Password FROM mysql.user;

サンプル出力:

+------+--------------------+----------+
| User | Host               | Password |
+------+--------------------+----------+
| root | localhost          |          |
| root | myhost.example.com |          |
| root | 127.0.0.1          |          |
| root | ::1                |          |
|      | localhost          |          |
|      | myhost.example.com |          |
+------+--------------------+----------+

rootはデフォルトでlocalhostからのログインのみが許可されていることがわかります。これを変更して、現在指定しているホストを許可するか、別のアカウントを作成する必要があります(推奨)。ルートの使用は危険です。

必要に応じて、十分な権限を持つ新しいユーザーを作成します。

参考

于 2012-10-16T01:07:42.940 に答える
1

ほとんどのホスティングプロバイダー(少なくともCPANELを使用するプロバイダー)は、クロスドメインクエリを許可していません。ホスティングでCPANELを使用している場合は、[データベース]-> [REMOTE MySQL]に移動し、クエリを実行しているサーバーのIPアドレスを追加する必要があります。

ホスティングの場合は、CPANELを使用せず、ホストのIPアドレス(12.123.123.12)をMySqlのユーザーテーブルに追加します。

最後のコメントは、セキュリティ上の理由から、質問を投稿するときに機密情報をIPアドレスとして使用しないことをお勧めします。よろしくルイス

于 2012-10-16T01:17:32.850 に答える
0

それが機能していない場合は、エラーを表示してみることができます

mysql_connect("12.123.123.12","root","<password>") or die("Error: ".mysql_error()); 

注:ホスト名は必ずしもIPアドレスではありません。mysqlserverのIPまたは名前です

mysqlserverと交換すると、機能します

于 2012-10-16T01:07:40.317 に答える
0

まず最初に、クエリでMySQLエラーをエコーすることを確認する必要があります:

 mysql_connect("12.123.123.12","root","<password>") or die(mysql_error());

MySQLサーバーがユーザーにリモートホストから接続する権限を与えているかどうかを確認します。これは、通常、特権を付与する方法です。

GRANT ALL PRIVILEGES ON yourdb.* to 'theuser'@'localhost' IDENTIFIED BY 'thepassword';

リモートホストからデータベースにアクセスする必要がある場合は、MySQLサーバーから次の特権ステートメントを設定する必要があります。

GRANT ALL PRIVILEGES ON yourdb.* to 'theuser'@'<yourip>' IDENTIFIED BY 'thepassword';
-- grant privilege to all remote hosts
GRANT ALL PRIVILEGES ON yourdb.* to 'theuser'@'%' IDENTIFIED BY 'thepassword';

MySQLサーバーへの管理アクセス権がある場合は、次のコマンドで権限を確認できます。

 SHOW GRANTS;

余談ですが、mysql_*関数は非推奨になりました。mysqli_*関数のみを使用してください。

于 2012-10-16T01:16:34.573 に答える