2011-07-10 15 views
1

Qt C++アプリケーションからMySQLデータベースに接続したいとします。データベースはホスト上にあり、インターネット上で利用可能です。接続は失敗します。私は、MySQLのユーザ名、パスワード、ホストのIPとポート番号(私が何であるかを知らないこと)C++からMySQLデータベースにアクセス

Application::getInstance()->db = QSqlDatabase::addDatabase("QMYSQL"); 
    QSqlDatabase *db = &Application::getInstance()->db; 
    db->setHostName("64.34.119.12"); // The string is IP address of my host (not real) 
    db->setDatabaseName("foo"); 
    db->setUserName("root"); 
    db->setPassword("password"); 
    db->open(); // returns false 

私はdb->setHostName()にIPアドレスを渡そうとしましたが、働いていないを持っています。

+0

このコードはローカルデータベースで動作します。私はそれをオンラインデータベース(ローカルデータベースと同じ)で動作するように変更したい。 –

+0

ポート番号を見つけ、ファイアウォールがそれをブロックしていないことを確認する必要があります。簡単な方法は、接続が可能かどうかを判断するためにip/portにtelnetで接続しようとすることです。そうでなければ、ファイアウォールの問題である可能性が高いです。 –

答えて

4

まあ、あなたは情報をほとんど与えなかったので、私はあなたに何かを与えることはできませんので、ここで私は行きます:ウェブホストは頻繁にローカルホストからの接続を受け入れるようにMySQLデータベースを設定します(phpや類似サイト、それだけで十分です。そうすれば、より安全で虐待される可能性は低くなります)。それはあなたのマシンからの接続が受け入れられない理由です。あなたは正しい資格を持っています。

+0

私は自分のデータベースをインターネット経由ですべてのクライアントに提供したいと思っています。そこで、CPanelのリモートデータベースアクセスコントロールにレコード '%。%。%。%'を追加します。これが真実かどうかは分かりません。 –

+1

@Sorush:他のツールを使ってリモートクライアントからデータベースにアクセスしようとしましたか?資格情報の問題を確認することはここでは問題ではありません... – vrince

+0

MySQL管理者とクエリブラウザを試しましたが、いずれも接続しませんでした。 –

関連する問題