Π£ΡΠΏΠ΅ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ»Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ° ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ»Π°Π³ΠΎΠ², Π°Π²Π°ΡΠΈΠΉΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³Π΄Π° ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅Π²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
ΠΠ»Ρ Π·Π°Π΄Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, ΡΠ°Π²Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΌΠΈ ΡΠ΅ΠΊΡΠ½Π΄Π°ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:
unsigned int timeout = 7;...connection = mysql_init(NULL);ret = mysql_options(connection, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&timeout);if (ret) {Β /* ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΊΠΈ */Β ...}connection = mysql_real_connect(connection ...)Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π°ΡΡΠΈΠ»ΠΈΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ, ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡ Π²Π°ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΊΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°Π½ΠΈΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅.
ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ Π·Π°Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π΄Π°Π»Π΅Π΅ ΠΊΠΎΠ΄Π΅
ricklocalhostfoo$ <b>mysql -u root -Ρ</b>Enter password:Welcome to the MySQL monitor. Commands end with ; or \g.mysql> <b>GRANT ALL ON *.* TO [email protected] IDENTIFIED BY 'secret';</b>Query OK, 0 rows affected (0.01 sec)mysql> <b>\q</b>Bye$ <b>mysql -u rick -p</b>Enter password:Welcome to the MySQL monitor. Commands end with ; or \g.mysql> <b>CREATE DATABASE foo;</b>Query OK, 1 row affected (0.01 sec)mysql> <b>\q</b>ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π½ΠΎΠ²ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠΌΠ΅ΡΡΠΎ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠ΅ΠΉ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠ° mysql, ΡΡΠΎ ΡΠΎΠΏΡΡΠΆΠ΅Π½ΠΎ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΈ Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΡΠ°ΠΉΠ» ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π½ΡΠΆΠ½ΡΠΌΠΈ Π²Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ.
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΡΠ°ΠΉΠ» create_children.sql:
---- Create the table children--CREATE TABLE children (Β childno int(11) NOT NULL auto_increment,Β fname varchar(30),Β age int(11),Β PRIMARY KEY (childno));----Populate the table 'children'--INSERT INTO children(childno,Β fname,Β age)Β VALUES (1,'Jenny',21);INSERT INTO children(childno,Β fname,Β age)Β VALUES (2,'Andrew',17);INSERT INTO children(childno,Β fname,Β age)Β VALUES (3,'Gavin',8);INSERT INTO children(childno,Β fname,Β age)Β VALUES (4,'Duncan', 6);INSERT INTO children(childno,Β fname,Β age)Β VALUES (5,'Emma',4);INSERT INTO children(childno,Β fname,Β age)Β VALUES (6,'Alex',15);INSERT INTO children(childno,Β fname,Β age)Β VALUES (7,'Adrian',9);Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ½ΠΎΠ²Π° Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² MySQL, Π²ΡΠ±ΡΠ°Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ foo, ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ». ΠΠ»Ρ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ»ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ:
$ <b>mysql -u rick --password=secret foo</b>Welcome to the MySQL monitor. Commands end with ; or \g.mysql> <b>\. create_children.sql</b>Query OK, 0 rows affected (0.01 sec)Query OK, 1 row affected (0.00 sec)ΠΡ ΡΠ±ΡΠ°Π»ΠΈ ΠΈΠ· Π²ΡΠ²ΠΎΠ΄Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΠ±Π»ΠΈΡΡΡΡΠΈΡ ΡΡ ΡΡΡΠΎΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠΎΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . Π’Π΅ΠΏΠ΅ΡΡ, ΠΈΠΌΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ°Π±Π»ΠΈΡΡ Ρ Ρ ΡΠ°Π½ΡΡΠΈΠΌΠΈΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΡΠ°ΠΉΠ» connect1.Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ rick Ρ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ
secretfoo#include <stdlib.h>#include <stdio.h>#include "mysql.h"int main(int argc, char *argv[]) {Β MYSQL *conn_ptr;Β conn_ptr = mysqlinit(NULL);Β if (!conn_ptr) {Β Β fprintf(stderr, "mysql_init failed\n");Β Β return EXIT_FAILURE;Β }Β conn_ptr = mysql_real_connect(conn_ptr, "localhost", "rick", "secret",Β "foo", 0, NULL, 0);Β if (conn_ptr) {Β printf("Connection success\n");Β } else {Β printf ("Connection failed\n");Β }Β mysql_close(conn_ptr);Β return EXIT_SUCCESS;}Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊ Π²Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΡΠ°Π²ΠΈΡΡ ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ
includemysqlclient-lz$ <b>gcc -I/usr/include/mysql connect1.Ρ -L/usr/lib/mysql -lmysqlclient -ΠΎ connect1</b>ΠΠ°ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π»ΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΈ ΠΌΠ΅ΡΡΠΎ ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, Π·Π°Π²ΠΈΡΡΡΠ΅Π΅ ΠΎΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°, ΠΈ ΠΎΡΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.