7

別のコンピューター上のMySQLサーバーにアクセスするC#アプリケーションがあります。私はIP経由でそれをやろうとしています。これが私の接続文字列です:

server = "192.168.10.221";
database = "restaurantdb";
uid = "root";
password = "";
string connectionString;
connectionString = "SERVER=" + server + "; PORT = 3306 ;" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
mycon = new MySqlConnection(connectionString);

今のアイデアは、両方のコンピューターが接続されているインターネットまたはWi-Fi接続を介して接続するというものです。次に、C#でコード化されたSQL文字列を介してデータベースにアクセスします。今ではLANネットワーク経由で接続することもできましたが、方法がわかりません。

コードでこの例外が発生しています

{"Access denied for user 'root'@'Crave-PC.lan' (using password: NO)"}   System.Exception {MySql.Data.MySqlClient.MySqlException}

ネットワークを介してサーバーにアクセスする方法について何かアイデアはありますか?

4

3 に答える 3

6

問題はMySQLサーバー側にあり、rootユーザーにはリモート接続する権限がありません。rootユーザーにリモート接続の許可を与えるには、mysqlコマンドラインで次のように入力するだけです。

GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'rootPass';

現在のrootパスワードの「rootPass」を変更するだけです。rootにパスワードがない場合、MySQLは接続を許可しないため、パスワードを定義する必要があります。

補足:セキュリティのベストプラクティスとして、クライアントアプリケーションからmysqlデータベースにアクセスするには、root以外の別のユーザーを定義する必要があります。

それが役に立てば幸い、

于 2013-02-26T17:04:51.133 に答える
2

このスレッドへの1つの追加:

2台のコンピューターが同じネットワークに接続されている場合、ソースコンピューターの構成とクライアントコンピューターからのユーザーへの特権の付与にもかかわらず、上記で定義された接続文字列が機能しない場合があります。

このような場合は、(Mysql構成ファイルの変更など、ソースコンピューターでさらに深刻なアクションを実行する前に)「IPアドレスの代わりにコンピューター名をサーバー名として使用する」ことを検討してください。

すなわち

  • まず、上記のようにユーザーに権限を付与します。
  • ただし、上記で提案した接続文字列の代わりに、次の接続文字列を試してください。

したがって、接続文字列は次のようになります。

server = "pc-name-whateveritis";
database = "restaurantdb";
uid = "root";
password = "";
string connectionString;
connectionString = "SERVER=" + server + "; PORT = 3306 ;" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
mycon = new MySqlConnection(connectionString);

多くの場合、ソースコンピュータの名前が機能する可能性があり、ソースコンピュータのIPアドレスがエラーを返します。

幸運を!

于 2014-06-11T11:42:16.747 に答える
0

ルートから別のユーザー名に変更してパスワードを設定すると、リモートアクセスでうまく機能します。これは、ローカルホストを使用している場合にのみルートにフルアクセス権限があるためです。IPアドレスを使用するローカルエリアネットワークではエラーが発生するため、コンピュータ名を使用してください。

于 2015-08-26T21:00:04.313 に答える