在c語言中,我們可以通過mysql庫來連接mysql數據庫。但是如果我們想在遠程服務器上訪問mysql數據庫,該怎么實現呢?下面就來介紹如何在c語言中實現連接遠程mysql數據庫。
首先,需要在遠程mysql服務器上開啟遠程訪問權限。修改/etc/mysql/mysql.conf.d/mysqld.cnf文件,在bind-address這行前面加上#注釋掉,重啟mysql服務即可。
#bind-address = 127.0.0.1
然后,我們在c語言中使用mysql_real_connect函數連接遠程mysql數據庫。需要注意的是,我們需要指定mysql服務器的IP地址、用戶名、密碼、端口號等信息。
#include <mysql.h> MYSQL *mysql_conn; MYSQL_RES *mysql_res; MYSQL_ROW mysql_row; char *mysql_host = "192.168.1.1"; // mysql服務器IP地址 char *mysql_user = "root"; // mysql用戶名 char *mysql_password = "123456"; // mysql密碼 char *mysql_database = "test"; // mysql數據庫名 int mysql_port = 3306; // mysql端口號 mysql_conn = mysql_init(NULL); if (!mysql_real_connect(mysql_conn, mysql_host, mysql_user, mysql_password, mysql_database, mysql_port, NULL, 0)) { printf("連接數據庫失敗: %s\n", mysql_error(mysql_conn)); exit(1); }
以上代碼中的mysql_init函數用于初始化mysql_conn變量,mysql_real_connect函數用于連接mysql數據庫。如果連接失敗,則輸出錯誤信息并退出程序。
連接成功后,我們就可以利用mysql_query函數來執行mysql語句,并通過mysql_store_result函數獲取查詢結果。例如:
if (mysql_query(mysql_conn, "SELECT * FROM users")) { printf("查詢失敗: %s\n", mysql_error(mysql_conn)); exit(1); } mysql_res = mysql_store_result(mysql_conn); while ((mysql_row = mysql_fetch_row(mysql_res))) { printf("username:%s, password:%s\n", mysql_row[0], mysql_row[1]); }
以上代碼中,我們查詢了users表中的所有記錄,并輸出了用戶名和密碼。需要逐行遍歷查詢結果,所以使用了mysql_fetch_row函數。
總之,連接遠程mysql數據庫只需在代碼中指定mysql服務器的IP地址、用戶名、密碼、端口號等信息即可。通過mysql_query函數執行mysql語句,并通過mysql_fetch_row函數逐行獲取查詢結果,即可實現遠程訪問mysql數據庫。