3

サーバー1とサーバー2の2つのサーバー(仮想マシン-これらにリモート接続できます)があります。

サーバー 1 に Web ページを保持し、サーバー 2 にデータベースを保持します。

現在、サーバー 1 からサーバー 2 のデータベースに接続しようとしています。

これが私のphpコードです:

<?php
            $dbhost = 'xxx.xx.xx.xx:xxxx';
            $dbuser = 'xxxxxx';
            $dbpass = 'xxxxxx';

            $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql' . mysql_error());


            $dbname = 'database';
            mysql_select_db($dbname);
?>

これは、接続しようとしたときに表示されるエラー メッセージです。

Access denied for user 'xxxxxx'@'server1' (using password: YES)

サーバー2に接続しようとしていることを考えると、@server1と表示されているのは少し不可解だと思いました。誰か洞察を提供できますか?

ありがとう

PS: どちらも Windows 2008 上にあります

4

4 に答える 4

3

MySQL は、アクセスを許可するかどうかを決定する際に、接続しているクライアントのホスト名を考慮に入れます。特定のユーザー名は、データベースをホストしている同じマシン (つまり、localhost) からのログインを許可されている場合がありますが、リモート システムから使用する場合は接続が許可されていません。

あなたの場合、ユーザー「xxxxxx」は「server1」からの接続を許可されていないようです。ユーザー 'xxxxxx' にすべてのホスト ('%') からのログイン権限を与えることができます。ただし、そのアカウントのログイン権限を、必要な特定のホスト (「server1」) またはホストの範囲 (「%.mydomain.com」または「144.155.166.0/255.255.255.0」) に制限する方が安全です。使用する。

MySql の認証プロセスのこの側面の詳細については、http://dev.mysql.com/doc/refman/5.0/en/connection-access.html を参照してください

于 2010-09-21T12:23:02.820 に答える
2

このユーザーを削除し、「xxxxxx」@「%」を使用して新しいユーザーを作成します。両方のサーバーでこれを実行します。@'%'は、ユーザーがどこからでも接続できることを示します。

于 2010-09-21T12:04:57.047 に答える
2

「ユーザー 'xxxxxx'@'server1' のアクセスが拒否されました」は、server1 が server2 にアクセスできないことを意味します。server1 (ホスト名: server1) から接続できる server2 に新しいユーザーを追加する必要があります。

于 2010-09-21T11:59:08.190 に答える
2

そのマシンに権限を与える必要があります

ここで確認してください

于 2010-09-21T12:01:29.470 に答える