bitsCN.com
首先保证安装:
1:安装MySQL:sudo apt-get install mysql-server mysql-client 2:安装MySQL开发包:sudo apt-get install libmysqlclient15-dev 此时需要用到的头文件会出现在/usr/include/mysql/里C语言连接MySQL数据库
此包含两个步骤: 1. 使用函数mysql_init初始化一个连接句柄结构. mysql_init的函数定义如下:MYSQL * mysql_init(MYSQL *);通常传递NULL给这个例程,他会返回一个指向新分配的连接句柄结构的指针。如果传递一个已有的结构,它将会重新初始化。这个例程在出错时返回NULL.
2. 实际进行连接 目前只是分配和初始化了一个结构,仍然需要使用mysql_real_connect来向一个连接提供参数,
mysql_real_connect的函数定义:
MYSQL* mysql_real_connect(MYSQL* connection, const char *server_host, const char *sql_user_name, const char *sql_password, const char *db_name, unsigned int port_number, const char *unix_socket_name, unsigned int flags);
指针connection必须指向已经被mysql_init初始化过的结构。
注意server_host既可以是主机名,也可以是IP地址。如果连接本地,可以制定localhost来优化。
sql_user_name和sql_password的含义和它们的字面意思一样。如果登录名为NULL,则假设登录名为当前Linux用户的登录ID,如果密码为NULL,则假设密码为空。
port_number和unix_socket_name应该分别为0和NULL,除非你改变了MySQL安装的默认设置。他们将默认使用合适的值。
最后,flags参数用来对一些定义的位模式进行OR操作,使得改变使用协议的某些特性。
如果无法连接,则返回NULL。mysql_error函数可以提供有帮助的信息。
3. 使用完连接,通常在程序退出前,要调用函数mysql_close;
mysql_close的函数定义:
void mysql_close(MYSQL *connection);将关闭连接。
连接MySQL的示例:
#include <stdio.h>#include <stdlib.h>#include "mysql.h"int main (int argc, char *argv[]) { MYSQL *conn; // 步骤1: 初始化连接句柄 conn = mysql_init(NULL); if (conn == NULL) { // 如果返回NULl说明初始化失败 printf("mysql_init failed!/n"); return EXIT_FAILURE; } // 步骤2:实际进行连接 // 参数分别为,conn连接句柄,host是MySQL所在主机或地址,user用户名,password密码,database_name数据库名,后面的都是默认 conn = mysql_real_connect(conn, "host", "user", "password", "database_name", 0, NULL, 0); if (conn) { // 连接成功 printf("Connection success!/n"); } else { printf("Connection failed!/n"); } // 步骤3: 退出前关闭连接 mysql_close(conn); return 0;}
编译和运行:
gcc -I/usr/include/mysql test.c -L/usr/lib/mysql -lmysqlclient -o app

错误处理
错误处理的两个函数:
// 返回错误码unsigned int mysql_errno(MYSQL *connection);// 返回错误详细信息char* mysql_error(MYSQL *connection);注意,当调用conn = mysql_real_connect(...), 时会遇到一个问题,因为它在失败时返回NULL指针,并没有提供一个错误码。但如果是将句柄作为一个变量,那么即使mysql_real_connect失败,也仍然能够处理它。
#include <stdio.h>#include <stdlib.h>#include "mysql.h"#include "errmsg.h"#include "mysqld_error.h"void Error(MYSQL* conn) { printf("Connection error %d: %s/n", mysql_errno(conn), mysql_error(conn));}int main (int argc, char *argv[]) { MYSQL conn; // 是变量而不是指针 mysql_init(&conn); // 注意取地址符& if (mysql_real_connect(&conn, "192.168.137.246", "root", "123456", "test", 0, NULL, 0)) { printf("Connection success!/n"); mysql_close(&conn); } else { fprintf(stderr, "Connection failed!/n"); if (mysql_errno(&conn)) { fprintf(stderr, "Connection error %d: %s/n", mysql_errno(&conn), mysql_error(&conn)); } } return EXIT_SUCCESS;}bitsCN.com

mysqloffersvariousstorageEngines、それぞれのfordifferentusecases:1)Innodbisidealforapplicationsingingidcomplianceanceandhighconcurrency、support transactions andforeignkeys.2)myisamisbestforread-havyworkloads、transactionsupptort.3)

MySQLの一般的なセキュリティの脆弱性には、SQLインジェクション、弱いパスワード、不適切な許可構成、および非合事ソフトウェアが含まれます。 1。SQL注射は、前処理ステートメントを使用することで防ぐことができます。 2。強力なパスワード戦略を強制的に使用することにより、弱いパスワードを回避できます。 3.不適切な許可構成は、ユーザー許可の定期的なレビューと調整を通じて解決できます。 4.未使用のソフトウェアは、MySQLバージョンを定期的にチェックして更新することでパッチを適用できます。

MySQLの遅いクエリを識別することは、遅いクエリログを有効にし、しきい値を設定することで実現できます。 1.スロークエリログを有効にし、しきい値を設定します。 2.スロークエリログファイルを表示および分析し、詳細な分析のためにMySQLDumpSlowやPT-Query-Digestなどのツールを使用します。 3.インデックスの最適化、クエリの書き換え、およびselect*の使用を回避することで、遅いクエリの最適化を実現できます。

MySQLサーバーの健康とパフォーマンスを監視するには、システムの健康、パフォーマンスメトリック、クエリの実行に注意する必要があります。 1)システムの健康を監視する:Top、HTOP、またはShowGlobalStatusコマンドを使用して、CPU、メモリ、ディスクI/O、ネットワークアクティビティを表示します。 2)パフォーマンスインジケーターの追跡:クエリ番号あたりのクエリ番号、平均クエリ時間、キャッシュヒット率などのキーインジケーターを監視します。 3)クエリ実行の最適化を確保します:スロークエリログを有効にし、実行時間が設定されたしきい値を超えるクエリを記録し、最適化します。

MySQLとMariaDBの主な違いは、パフォーマンス、機能、ライセンスです。1。MySQLはOracleによって開発され、Mariadbはフォークです。 2. Mariadbは、高負荷環境でパフォーマンスを向上させる可能性があります。 3.MariaDBは、より多くのストレージエンジンと機能を提供します。 4.MySQLは二重ライセンスを採用し、MariaDBは完全にオープンソースです。既存のインフラストラクチャ、パフォーマンス要件、機能要件、およびライセンスコストを選択する際に考慮する必要があります。

MySQLはGPLライセンスを使用します。 1)GPLライセンスにより、MySQLの無料使用、変更、分布が可能になりますが、変更された分布はGPLに準拠する必要があります。 2)商業ライセンスは、公的な変更を回避でき、機密性を必要とする商用アプリケーションに適しています。

Myisamの代わりにInnoDBを選択する場合の状況には、次のものが含まれます。1)トランザクションサポート、2)高い並行性環境、3)高いデータの一貫性。逆に、Myisamを選択する際の状況には、1)主に操作を読む、2)トランザクションサポートは必要ありません。 INNODBは、eコマースプラットフォームなどの高いデータの一貫性とトランザクション処理を必要とするアプリケーションに適していますが、Myisamはブログシステムなどの読み取り集約型およびトランザクションのないアプリケーションに適しています。

MySQLでは、外部キーの機能は、テーブル間の関係を確立し、データの一貫性と整合性を確保することです。外部キーは、参照整合性チェックとカスケード操作を通じてデータの有効性を維持します。パフォーマンスの最適化に注意し、それらを使用するときに一般的なエラーを避けてください。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

メモ帳++7.3.1
使いやすく無料のコードエディター

ホットトピック









