5

我已经将 MySql 配置为使用 SSL,它在 PHP 中运行良好。但是当我尝试使用 C/C++ 程序连接到数据库时,它不起作用。

变量:

host = "localhost"
psw = "pass"
db = "database"

没有 SSL:

usr = "userNOSSL"
conn = mysql_init(NULL);
mysql_real_connect(conn, host, usr, psw, db, 0, NULL, 0);

这个效果很好。我可以通过以下方式轻松检索数据:

query = "SELECT x FROM y"

mysql_query(conn, query);

result = mysql_store_result(conn);

num_fields = mysql_num_fields(result);

while ((row = mysql_fetch_row(result)))
{
    for(i = 0; i < num_fields; i++)
    {
        printf("%s ", row[i] ? row[i] : "NULL");
    }
    printf("\n");
}

mysql_free_result(result);

使用 SSL(CLIENT_SSL 标签):

usr = "userSSL"
conn = mysql_init(NULL);
mysql_real_connect(conn, host, usr, psw, db, 0, NULL, CLIENT_SSL);

错误

错误:我的“MYSQL *conn;” 对象没有获得像“没有 ssl”这样的参数。所以,它发生了一个异常:

A first chance of exception at 0x0f18c274 in test_Class.exe : 0xC0000005: 
Acces violation when reading on location 0x00000048.
An unhandled exception at 0x0f18c274 in test_Class.exe : 0xC0000005: 
Acces violation when reading on location 0x00000048.

在这一行:

num_fields = mysql_num_fields(result);

如果我这样做,同样的错误:

mysql_ssl_set(.SOMEOPTIONTHERE.)
mysql_real_connect(conn, host, usr, psw, db, 0, NULL, 0);

提前致谢。

4

1 回答 1

0

我的猜测是您的本地主机没有正确设置来处理 SSL。试试这个:http ://www.chriscalender.com/?tag=ssluserlocalhost

于 2013-04-05T22:29:50.233 回答