私はhostgatorで私のウェブサイトを持っていて、C#Windowsアプリケーションでmysqlデータベースにアクセスしたいのですが、接続しようとするとこのメッセージが表示されました:
「古いパスワードによる認証はサポートされなくなりました。4.1スタイルのパスワードを使用してください」
私は与えられた解決策を試しました:
SET SESSION old_passwords=0;
SET PASSWORD FOR user@Host=PASSWORD('your pw here');
最初のクエリは正常に実行されましたが、2番目のクエリが実行されたときに「user @ Hostのアクセスが拒否されました」というエラーが表示されました。なぜこの問題があるのか理解できません。 MySQL-connecter-net 6.6.5を使用しています。
データベースをMySqlワークベンチ5.2.47に正常に接続しました。
誰でも私がもっとできることを助けてくれますか?
ホスティングサイトに連絡し、my.cnfファイルを変更して4.1スタイルのパスワードを使用します。そして、私はmysqlで接続することができます
mysql -u <username> -p <password> -h <hostname>;
しかし、mySQLコネクタネット6.6.5を使用してC#で接続しようとすると、このエラーが再び発生しました。
Windows 8 64ビットでVisual Studio 2012とMySQLコネクタ6.6.5を使用しています。これは接続に使用したコードです
using MySQL.Data.MySQLClient;
private void button1_Click(object sender, EventArgs e)
{
string connStr = String.Format("server={0};port={1};uid={2};password={3};database={4}",
txtserver.Text, txtPort.Text, txtUser.Text, txtPassword.Text, txtDatabase.Text);
conn = new MySqlConnection(connStr);
try
{
conn.Open();
MessageBox.Show("Test Connection Succeded");
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message);
}
}
問題がどこにあるのか理解できません。私を助けてください
同じ問題がありました。私の場合、ワークベンチによってデータベースに接続された以下のコマンドを実行しました。
SET SESSION old_passwords=0;
SET PASSWORD FOR my_user=PASSWORD('my_password');
その後、一般的なmysql接続文字列を使用して、c#コードでMySql Connector 6.6.5を使用して接続できます。
"server=my_server_ip;user=my_user;database=my_db;port=3306;password=my_password;"
今日、C#アプリケーションで同様の問題が発生しました。 hostgator.com(mysql)のサーバーに接続し、localhostに接続しようとしました。多くの投稿を読んで、多くの変更を加えた後、すべてのステップを実行しましたが、hostgator mysqlに接続できませんでした。
私の場合の解決策は、MySql Connector/NETライブラリをバージョン6. *からバージョン5. *に変更することでした。変更後、アプリケーションは正常に接続されました。
これはすべての人にとって実行可能なソリューションではないかもしれませんが、一部の人にとってはうまくいくかもしれません。
今日、この問題に遭遇しましたが、以下のように修正しました。
SET old_passwords=FALSE;
SET PASSWORD = PASSWORD('new pwd here');
サーバーの接続バージョンがクライアントよりも低い可能性があるため、次のコマンドを実行する必要があります。「SET old_passwords = FALSE;」幸運を!
C#のMySqlClientパッケージを使用して同じ問題が発生しました。分解しましょう:
古いスタイルのパスワードを使用しないようにデータベースが必要なので、実行します
SET old_passwords = 0;
[〜#〜] notice [〜#〜]「SESSION」キーワードはありません。これは、最初のクエリのみが機能することを許可したものです。「SESSION」は一時的であり、セッションの終了後にセッション設定はすべて失われます。
次に、user @ Hostのパスワードを新しいパスワードスタイルに設定する必要があります
User @ Hostのパスワードの設定= PASSWORD( 'password');
この2つはMySqlClientを許可する必要があります
サーバーが新しいパスワードを使用するように構成されている場合、アプリがアクセスしなくなってもサーバー上のフラグを変更する理由はないため、SET old_password = 0の適用を忘れてください。使用しているコネクタNETを調査します。
コネクタ6.5.4はold_passwordを使用するのに適したもので、最新バージョンは新しいものを使用しています。
最良の方法は、マシンにコネクタをインストールするのを避けることです。すでにNETがあれば、DLLを処理するためにそのままにしておくか、とにかくMySQL.Data.DLLバージョン6.5.4.0(384 kbytes)を見つけようとします
@diangelisjの回答に追加して、問題の根本はサーバーにインストールされているPhpMyAdminのバージョンであると言いたいだけです。最新のMySQL Data Connectorクラスを使用するには、最新のPhpMyAdminが必要です(または問題が発生します)。私の場合、PhpMyAdmin 4.0.10.7があり、MySQL Data Connector 6.7.9を使用しようとしましたが、エラーが発生しました。
私がしたこと:
https://dev.mysql.com/downloads/connector/net/6.9.html からバージョン5.2.7をダウンロードします
アプリケーションへの参照として.dllを追加する
プレスト!
今日、私は同じ問題を見つけました。 Workbenchをダウンロードしました。データベースを接続するためのワークベンチには、次のような設定があります。1.タブSSLを選択し、「se SSL」でオプション「no」を選択します。 2. [詳細設定]タブを選択し、[ole認証プロトコルを使用する]を選択します。ワークベンチが動作した後。そして、tai1001 'の投稿に従います。これですべてのステップが機能することがわかりました。
私はちょうどこのように私の問題を解決しました:
1)mysqlワークベンチでdbに接続します(「古い認証を使用」と「クリアテキストでパスを送信」を選択します)
2)ワークベンチを使用して、次の操作を数回実行しました(「0行が影響を受けました」と言われ続けたため):(ユーザーIDとパスワードも適切なものに変更します)
SET SESSION old_passwords=0;
SET PASSWORD FOR userID=PASSWORD('password');
SET SESSION old_passwords=false;
SET PASSWORD FOR userID=PASSWORD('password');
3)アプリに戻り、実行されるはずです...
それは少なくとも私がやった方法です。私はIX mysqlを使用していますが、彼らはサーバーで古い認証を使用しているので、あなたはあなたの側で何かをしなければなりません...
私は提案されたすべてを試しましたが、私が応答した他の人として問題を解決することができませんでした。結局、私のデータベースが置かれていたサーバーはバージョン3.5.5以降phpMyAdminで更新されておらず、現在バージョン4.1.14で使用されており、問題であることが判明しました。解決策は、リモートDBでの作業を継続するために、ホストphpMyAdminまたは独自のmySQLを以前のバージョンに更新することです。発生したいくつかの疑問を解決するために、この知識が必要になる場合があります。 :)