在使用C語言訪問MySQL數(shù)據(jù)庫時,若需要進(jìn)行數(shù)據(jù)加密傳輸,就需要使用SSL協(xié)議。以下是使用C語言連接MySQL數(shù)據(jù)庫并使用SSL的例子:
#include <stdio.h> #include <stdlib.h> #include <mysql.h> int main(int argc, char *argv[]) { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *server = "localhost"; char *user = "root"; char *password = "password"; char *database = "test"; int port = 3306; char *cert = "client-cert.pem"; char *key = "client-key.pem"; char *ca = "ca-cert.pem"; conn = mysql_init(NULL); if (!mysql_real_connect(conn, server, user, password, database, port, NULL, CLIENT_SSL, cert, key, ca)) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } if (mysql_query(conn, "SELECT * FROM mytable")) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } res = mysql_use_result(conn); printf("ID\tName\tAge\n"); while ((row = mysql_fetch_row(res)) != NULL) { printf("%s\t%s\t%s\n", row[0], row[1], row[2]); } mysql_free_result(res); mysql_close(conn); return 0; }
在上面的代碼中,使用了mysql_real_connect函數(shù)連接MySQL數(shù)據(jù)庫,并指定了SSL相關(guān)的參數(shù)。其中,cert
和key
分別指定客戶端證書和私鑰的路徑,ca
指定服務(wù)器的CA證書的路徑。這些證書需要預(yù)先生成并分發(fā)到客戶端和服務(wù)器上。
通過使用SSL協(xié)議,可以保證數(shù)據(jù)在傳輸過程中不被竊聽或篡改,提高了系統(tǒng)的安全性。