fsockopenまたはソケット機能を使用してデータベースサーバーに接続し、コマンドを発行する
-
22-10-2019 - |
質問
ソケット機能を使用してプログラミング言語を使用してデータベースサーバーに接続するにはどうすればよいですか。私はプロトコルのように考えています。たとえば、SMTP、HTTP、FTP、IMAP。これらのポートに接続し、COMANDS(コマンドを実行)を発行します。これらのように、データベースサーバー(ポートは3306)に接続することができ、DDL、DML、TCLなどのさまざまな機能を実行する可能性のあるコマンドを発行できます。
人々はデータベースサーバーを言っているので、私はこれを、mysql_connect、mysql_select、mysql_queryなどのプログラミング言語関連のSQL関数を使用する代わりに、私が思うことに何らかの可能性を行う必要があるように考えました...
提案、答え、参照が欲しいです。 Googleで関連する検索文字列を使用して情報を見つけていない場合があります。
解決
(カスタム)プロトコルを使用してサーバーと通信する必要があります。
なぜこれらのプロトコルを再実装したいのですか?これが単なる学術的な好奇心でない限り、DBベンダーが提供するライブラリを使用する方がはるかに良いです。
あなたが話している関数(mysql_connect、mysql_query、...)は本質的に生のソケットに作用しますが、彼らはプロトコルを知っています。彼らはSQLクエリを取得し、ソケットを取り、クエリを適切なデータに処理して送信します。
DBサーバーなどのプロトコルは、人間以外の読み取り可能になります。 HTTPは、小さなサイズと厳密な解析用に設計されたプロトコルと比較して、きれいで明確です。あなたが絶対に必要でない限り、私は車輪を再発明することを避けます。
他のヒント
"あなたはそうしない"。特定のサービスがそのプロトコルをパブリックAPIとして文書化しない限り、これは危険で困難であり、いつでも破る傾向があります。このプロトコルには、これを難しくすることを目的とした要素が含まれている場合があります。もちろん、Wiresharkとリバースエンジニアリングプロトコルをエンジニアリングすることもできますが、定義に「9月22日にすべてのQをRに変更する」は含まれていないことを確信していません。