將完整 MySQL 伺服器功能嵌入客戶端應用程式的 C/C++ 靜態庫(libmysqld.a)。優點:無網路開銷、部署簡單(單一執行檔)、管理輕量。API 與客戶端/伺服器模式相容,遷移成本極低。
| 函數 | 調用時機 |
|---|---|
mysql_server_init() | 程式啟動早期,main() 中,任何 MySQL API 之前。 |
mysql_server_end() | 程式退出前。 |
mysql_thread_init() | 每個存取 MySQL 的執行緒啟動時。 |
mysql_thread_end() | 執行緒結束前(pthread_exit() 之前)。 |
gcc mysql_test.c -o mysql_test -lz \
`/usr/local/mysql/bin/mysql_config --include --libmysqld-libs`
libmysqld.a 而非 libmysqlclient.a。pthread、zlib、crypt 等系統庫。-lpthread、FreeBSD -pthread)。--with-embedded-privilege-control 啟用。可在 my.cnf 中使用 [embedded]、[server]、[應用名_SERVER] 區段分離配置,mysql_server_init() 第二參數傳遞 --defaults-file=my.cnf。
mysql_server_init(argc, argv, server_groups);
MYSQL *mysql = mysql_init(NULL);
mysql_options(mysql, MYSQL_READ_DEFAULT_GROUP, "libmysqld_client");
mysql_options(mysql, MYSQL_OPT_USE_EMBEDDED_CONNECTION, NULL);
mysql_real_connect(mysql, NULL, NULL, NULL, "db1", 0, NULL, 0);
mysql_query(mysql, "SELECT ...");
// fetch results...
mysql_close(mysql);
mysql_server_end();