0x00序
Linux下C连接MYSQL环境主要包括两部分。C环境部分和MYSQL环境部分。其中C可以用VIM作代码编辑器,GCC作编译器。下面主要提出MYSQL安装过程和代码示例。
0x01 MYSQL安装
该部分主要包括mysql-server的安装和mysql-devel安装。其中,mysql-server为服务端。mysql-devel主要为C程序提供头文件和静态链接库。有解释说明:如果不做C开发,可以不装,其他任何的-devel包同理。
Ubuntu 18.04 LTS下安装mysql-server和mysql-devel的安装命令如下:
sudo apt install mysql-server
sudo apt install mysql-devel
在安装mysql-server的过程中如遇到mysql不提设置密码,首先查看mysql服务是否正在运行,进而可以查看mysql配置目录的默认密码,并利用默认密码进行root密码的设置。
mysql服务状态、端口查询命令为
sudo service mysql status
sudo netstat -tap | grep mysql
默认密码配置文件在/etc/mysql/debian.cnf中。
利用默认的用户名密码登陆mysql,执行mysql命令修改root 密码,主要分为三步。
1)更改密码设置
update mysql.user set plugin="mysql_native_password" where user ="root";
2)设置root密码
update mysql.user set authentication_string=password('这是是要设置的密码') where user='root' and host='localhost';
flush privileges;
3)重启MYSQL服务
sudo service mysql restart
服务启动停止则分别为
sudo service mysql start
sudo service mysql stop
状态查看
0x02 MYSQL卸载
MYSQL卸载如下:
sudo apt purge mysql-*
sudo rm -rf /etc/mysql/ /var/lib/mysql
sudo apt autoremove
0x03 C语言示例
新建test.c内容如下:
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
int main(void)
{
MYSQL *conn = mysql_init(NULL);
conn = mysql_real_connect(conn, "localhost", "root", "你的root密码", "数据库名称", 0, NULL, 0);
if(!conn){
perror("mysql_real_connect");
exit(1);
}
int res = mysql_query(conn, "select * from test");
if(res){
printf("mysql_query: %s\n", mysql_error(conn));
exit(1);
} else {
MYSQL_RES *result = mysql_store_result(conn);
if(result) {
for(int i = 0; i < mysql_num_rows(result); i++) {
MYSQL_ROW row = mysql_fetch_row(result);
for(int j = 0; j < mysql_num_fields(result); j++){
printf("%s\t", row[j]);
}
printf("\n");
}
}
mysql_free_result(result);
}
mysql_close(conn);
return 0;
}
GCC编译命令如下:
gcc test.c -o test $(mysql_config --cflags --libs)
echo 查看
(
m
y
s
q
l
c
o
n
f
i
g
−
−
c
f
l
a
g
s
)
和
(mysql_config --cflags)和
(mysqlconfig−−cflags)和(mysql_config --libs)如下: