C语言中使用MySql下:使用服务器中的MySql
[toc]
一 、配置服务端
1. 安装kali
2. 在kali中开启MySql
打开MySql服务
1
2systemctl start mysql
#service mysql restart查看MySql状态
1
2systemctl status mysql
#service mysql statusMySQL初始化
1
mysql_secure_installation
初始化之后再重启服务
1
systemctl restart mysql
运行MySQL测试一下,exit退出
1
mysql
3. 开启服务器中MySql的访问权限,使其他主机可以连接服务器的MySql数据库
在服务器中启动
MySql1
mysql
列出所有
MySql用户1
SELECT user FROM mysql.user;
选择数据库
mysql1
use mysql
显示数据库
mysql,里面保存了所有用户1
SELECT user,host FROM user;
创建新用户命名为
new1
CREATE USER 'new'@'%' IDENTIFIED BY 'Password';
设置网段内所有主机都可连接用户
new1
GRANT ALL PRIVILEGES ON *.* TO 'new'@'%' WITH GRANT OPTION;
刷新
mysql设置1
flush privileges;
退出
mysql程序1
exit
4. 在服务器中使用MySql新建数据库与表格
- 创建数据库
- 选择数据库
- 创建表
- 给表中插入数据
- 退出
二、编写C语言程序并运行
1.编写C语言程序
将本地MySql中的include与lib库包含在项目中
编写C语言代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
int main()
{
MYSQL mysql; //数据库句柄
MYSQL_RES* res; //查询结果集
MYSQL_ROW row; //记录结构体
//初始化数据库
mysql_init(&mysql);
//设置字符编码
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");
//连接数据库
if (mysql_real_connect(&mysql, "10.0.2.110", "new", "Password", "test",
3306, NULL, 0) == NULL) {
printf("error: %s\n", mysql_error(&mysql));
printf("连接失败!\n");
exit(-1);
}
//查询数据
int ret = mysql_query(&mysql, "select * from book;");
printf("ret: %d\n", ret);
//获取结果集
res = mysql_store_result(&mysql);
//给ROW赋值,判断ROW是否为空,不为空就打印数据。
while (row = mysql_fetch_row(res))
{
printf("%s ", row[0]); //打印ID
printf("%s ", row[1]); //打印书名
printf("%s ", row[2]); //打印作者名
printf("%s ", row[3]); //打印书号
printf("%s ", row[4]); //打印时间
printf("\n");
}
//释放结果集
mysql_free_result(res);
//关闭数据库
mysql_close(&mysql);
system("pause");
}编译
新建一个文件夹,将应用程序与相关Dll文件添加到文件夹中
运行文件夹里的应用程序
2.解决程序连接服务器失败的问题
在本地使用ping命令测试服务器是否连通,不连通的话自行排查网络问题,连通后进行下一步。
在服务器里使用命令查看端口连通状态
1
netstat -ntpl |grep 3306
- 结果显示地址为
0.0.0.0:3306说明可被其他地址连接,如果为127.0.0.1:3306则说明MySql设置了只允许本机地址连接. - 解决办法为修改相关文件允许所有ip连接
- 结果显示地址为
修改文件
1
vim /etc/mysql/mariadb.conf.d/50-server.cnf
- 将文件里的
bind-address从127.0.0.1修改为0.0.0.0
- 将文件里的
重启MySql服务
1
sudo systemctl restart mysql
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
