#include #include "mysql/mysql.h" #include #include #include using namespace std; //MySQL server details //Modify to match your server details //#define HOST "gateway.webyog.com" //#define PORT 3307 //#define USERNAME "mariadb" //#define PASSWORD "mariadb#123" #define HOST "anyinstance.us-east-1.rds.amazonaws.com" #define PORT 3306 #define USERNAME "username" #define PASSWORD "password" #define capath "C:\\Users\\Sudhindra\\Desktop\\certs\\dummy.pem" #define QUERY " SHOW STATUS LIKE 'Ssl_cipher' "//query for getting cipher unsigned __stdcall Thread(void *ArgList){ MYSQL * mysql; MYSQL_RES * res; MYSQL_ROW row; /* * Initializing a MySQL object suitable for mysql_real_connect() * if the object initialized is NULL then we are returning from the function. * * Refer: http://dev.mysql.com/doc/refman/5.0/en/my-init.html * * Returns: none */ mysql = mysql_init(NULL); if (mysql == NULL) { cout << "Failed to initialize the MySQL object\n"; mysql_thread_end(); return NULL; } /* * Setting up MySQL client connect timeout to 30 seconds. * MYSQL_OPT_CONNECT_TIMEOUT (argument type: unsigned int *) * Connect timeout is in seconds. * * Refer: http://dev.mysql.com/doc/refman/5.0/en/mysql-options.html * * Returns: * 0 (Zero) for success. Nonzero if unknown option specified. */ if (mysql_options(mysql, MYSQL_OPT_COMPRESS, 0)) { cout << "Unknown option set\n"; } /* * attempting to set ssl certificate * * Refer: http://dev.mysql.com/doc/refman/5.0/en/mysql-ssl-set.html * * Returns:always 0 mysql_real_connect returns error if fails */ mysql_ssl_set(mysql, NULL, NULL, capath, NULL, NULL); /* * attempting to establish connection to a MySQL Server. * * Refer: http://dev.mysql.com/doc/refman/5.0/en/mysql-real-connect.html * * Returns: * A MYSQL* connection handle if the connection was successful, * NULL if the connection was unsuccessful. */ if (mysql_real_connect(mysql, HOST, USERNAME, PASSWORD, NULL, PORT, NULL, 0) == NULL) { cout << "Error mysql_real_connect: " << mysql_error(mysql) << "\n"; if (mysql) { mysql_close(mysql); } /* * Freeing memory allocated by mysql_thread_init(). */ mysql_thread_end(); return NULL; } /* * Executing SQL statement. * * Refer: http://dev.mysql.com/doc/refman/5.0/en/mysql-real-query.html * * Returns: * 0 (Zero) if the statement was successful. Nonzero if an error occurred. */ if (mysql_query(mysql, QUERY)) { cout << "Error mysql_query: " << mysql_error(mysql) << "\n"; if (mysql) { mysql_close(mysql); } return 0; } else { res=mysql_use_result(mysql); while ((row = mysql_fetch_row(res)) !=NULL) printf("Encryption--%s\n", row[1]); } /* * Storing the result to MYSQL_RES, to reuse the connection for querying again * and then freeing the result set. * * Refer: http://dev.mysql.com/doc/refman/5.0/en/mysql-store-result.html * Refer: http://dev.mysql.com/doc/refman/5.0/en/mysql-free-result.html */ res = mysql_store_result(mysql); cout << "everything worked\n"; mysql_free_result(res); /* * Closing a previously opened connection. * * Refer: http://dev.mysql.com/doc/refman/5.0/en/mysql-close.html */ mysql_thread_end(); mysql_close(mysql); } int main() { int i=0; HANDLE myhandleA, myhandleB; // * mysql_library_init() - initializes the MySQL library before any other MySQL function is called. //* //* Refer: http://dev.mysql.com/doc/refman/5.0/en/mysql-library-init.html //* //* Returns: //* 0 (Zero) if successful. Nonzero if an error occurred. //*/ if (mysql_library_init(0, NULL, NULL)) { cout << "mysql_library_init() is un-successful\n"; cout << "Exiting program\n"; return -1; } else { cout << "mysql_library_init() is successful\n"; } myhandleA = (HANDLE)_beginthreadex(0, 0, &Thread, 0, 0, 0); myhandleB = (HANDLE)_beginthreadex(0, 0, &Thread, 0, 0, 0); WaitForSingleObject( myhandleA , 100000); WaitForSingleObject( myhandleB , 100000); //close mysql lib mysql_library_end(); //i++; //} getch(); return 0; }