MySQL 5.7.10 绿色版的精简安装与C语言编程

本文介绍 MySQL 5.7.10 的下载、精简、安装、卸载步骤,并提供使用 GCC 在 MinGW64 环境下进行 MySQL 编程的方法及示例代码。

一、下载

1、进入官网:http://www.mysql.com/

225847_X1h0_580100.png

2、点开225810_tW5l_580100.png


3、拉到下面

224754_sRy6_580100.png

4、点开230029_BxUF_580100.png

230758_M1bI_580100.png

5、点开红字“这里下载服务器”左边的230137_k6k0_580100.png

6、拉到下面

225248_KTMU_580100.png

7、点击你需要的225352_ov88_580100.png,建议点第一个。

8、拉到下面

225452_kZzk_580100.png

9、点击225529_JPjU_580100.png开始下载 mysql-5.7.10-win32.zip

10、点开 4 中红字标示“这里下载编程所需的头文件及链接库”左边的231041_wmeR_580100.png

11、找到并点开

231137_CzyM_580100.png

12、拉到页面中间位置

231255_dU98_580100.png

13、以下同 7、8、9,建议点第三个,开始下载 mysql-connector-c-6.1.6-win32.zip

        注意版本要一致:要么都是 32-bit,要么都是 64-bit。


二、精简

1、mysql-5.7.10-win32.zip 中仅保留 bin 和 share 两个子目录,其他子目录及文件全部删除。

2、mysql-5.7.10-win32\bin 目录下仅保留 mysqld.exe、mysqladmin.exe和 mysql.exe 三个文件,其他子目录及文件全部删除。

3、mysql-5.7.10-win32\share 目录下仅保留 charsets 和 english 两个子目录,其他子目录及文件全部删除。

4、mysql-connector-c-6.1.6-win32.zip 中仅保留 include 和 lib 两个目录,其他子目录及文件全部删除。

5、mysql-connector-c-6.1.6-win32\lib 目录下保留 libmysql.dll 和 libmysql.lib 两个文件,其他子目录及文件全部删除。

精简后的目录结构如下:

mysql-5.7.10-win32

    | -- bin

    |        |-- mysql.exe

    |        |-- mysqladmin.exe

    |        |-- mysqld.exe

    | -- share

               |-- charsets

               |               |-- *.*

               |-- english

                             |-- *.*


mysql-connector-c-6.1.6-win32

    |-- include

    |             |-- mysql

    |             |          |-- *.*

    |             |--  *.*

    | -- lib

            |-- libmysql.dll

            |-- libmysql.lib


三、安装

1、解压 mysql-5.7.10-win32.zip,路径中不要出现汉字。

2、以管理员权限启动 cmd,并进入到 mysql\bin 目录。

3、初始化:mysqld --initialize-insecure --user=root

4、安装服务:mysqld install

5、启动服务:net start mysql

6、设置密码:mysqladmin -u root password 密码

093535_vN6R_580100.png

7、建议把服务里 MySQL 的启动类型从自动设为手动,把第5步做个批处理文件。需要的时候右键 .bat 文件以管理员身份运行。


四、卸载

1、停止服务:net stop mysql

2、移除服务:mysqld remove

3、删掉 mysql 目录

093426_Pp0r_580100.png


五、GCC(MinGW64)编程

1、将 mysql-connector-gcc-6.1.6-win32 目录下的 include 和 lib 两个子目录拷贝到 MinGW 的 32 位安装目录下 MinGW\i686-w64-mingw32,同名文件夹合并即可。

2、把  lib 子目录中 libmysql.dll 文件再拷贝一份到 C:\Windows\SysWOW64 目录下。


六、示例

/* 编译:
 *   gcc -o TestMySQL TestMySQL.c -lmysql
 */

#include <string.h>
#include <stdio.h>
#include "mysql.h"

int main()
{
    char szHost[] = "localhost";
    char szUser[] = "root";
    char szPasswd[] = "root";
    char szDB[] = "study1";
    char szTable[] = "T_Pet";
    char szQuery[1024];     // SQL语句,单条记录最大8000字节
    MYSQL mysql, *pmysql;   // 数据库连接的对象及其指针
    MYSQL_RES *res;         // 结果集
    MYSQL_ROW row;          // 结果集中的一行数据
    unsigned int nFields;   // 结果集中的字段数
    unsigned int nRows;     // 结果集中的行数
    unsigned int i, j;

    // 初始化MYSQL对象
    mysql_init(&mysql);
    // 连接服务器
    pmysql = mysql_real_connect(&mysql, szHost, szUser, szPasswd, NULL, 0, NULL, 0);
    if(pmysql == NULL)
    {
        printf("Couldn't connect to host. (%s)\n", mysql_error(&mysql));
        return 1;
    }

    // 创建库
    sprintf(szQuery, "create database if not exists %s", szDB);
    if(mysql_real_query(pmysql, szQuery, strlen(szQuery)) != 0)
    {
        printf("Create databse failed. (%s)\n", mysql_error(pmysql));
        return 1;
    }
    // 选择库
    if(mysql_select_db(pmysql, szDB) != 0)
    {
        printf("Select databse failed. (%s)\n", mysql_error(pmysql));
        return 1;
    }
    // 创建表
    sprintf(szQuery, "create table if not exists %s (ID int primary key not NULL auto_increment, \
    Name varchar(20), \
    Owner varchar(20), \
    Species varchar(20) not NULL, \
    Sex char(2) not NULL default 'f', \
    Birthday date not NULL, Deathday date) \
    engine=MYISAM default charset=UTF8", szTable);
    // engine=InnoDB 时每次 auto_increment 会跳加 8,原因不明。
    if(mysql_real_query(pmysql, szQuery, strlen(szQuery)) != 0)
    {
        printf("Create table failed. (%s)\n", mysql_error(pmysql));
        return 1;
    }
    // 插入数据
    sprintf(szQuery, "load data LOCAL INFILE 'pet.txt' into table %s fields \
        terminated by '\\t' lines terminated by '\\r\\n' \
        (Name, Owner, Species, Sex, Birthday, Deathday)", szTable);
    if(mysql_real_query(pmysql, szQuery, strlen(szQuery)) != 0)
    {
        printf("Load data failed. (%s)\n", mysql_error(pmysql));
        return 1;
    }

    // 查询表头
    sprintf(szQuery, "select COLUMN_NAME from information_schema.COLUMNS where table_name = '%s' \
        and table_schema = '%s'", szTable, szDB);
    if(mysql_real_query(pmysql, szQuery, strlen(szQuery)) != 0)
    {
        printf("Query failed. (%s)\n", mysql_error(pmysql));
        return 1;
    }
    res = mysql_store_result(pmysql);
    if(res == NULL)
    {
        printf("Couldn't get result. (%s)\n", mysql_error(pmysql));
        return 1;
    }
    while((row = mysql_fetch_row(res)) != NULL)
        printf("%-20s", row[0]);
    printf("\n");
    // 查询全表数据
    sprintf(szQuery, "select * from %s", szTable);
    if(mysql_real_query(pmysql, szQuery, strlen(szQuery)) != 0)
    {
        printf("Query failed. (%s)\n", mysql_error(pmysql));
        return 1;
    }
    res = mysql_store_result(pmysql);
    if (res == NULL)
    {
        printf("Couldn't get result. (%s)\n", mysql_error(pmysql));
        return 1;
    }
    nRows = mysql_num_rows(res);
    nFields = mysql_num_fields(res);
    for(i=0; i<nRows; i++)
    {
        row = mysql_fetch_row(res);
        for(j=0; j<nFields; j++)
            printf("%-20s", row[j] ? row[j] : "");
        printf("\n");
    }

    // 清理
    mysql_free_result(res);
    mysql_close(pmysql);
    return 0;
}

pet.txt 是抄来的(中间分隔符不是空格,是 Tab)

Fluffy	Harold	cat	f	1993-02-04
Claws	Gwen	cat	m	1994-03-17
Buffy	Harold	dog	f	1989-05-13
Fang	Benny	dog	m	1990-08-27
Bowser	Diane	dog	m	1979-08-31	1995-07-29
Chirpy	Gwen	bird	f	1998-09-11
Whistler	Gwen	bird	f	1997-12-09
Slim	Benny	snake	m	1996-04-29

本文仅在 mysql_5.7.10-win32 + mysql-connector-c-6.1.6-win32 和 MinGW_w64-i686-5.3.0-release-posix-dwarf-rt_v4-rev0 下测试通过。

转载于:https://my.oschina.net/u/580100/blog/600494

作为一名开发人员,我对绿色小软件情有独钟,因为用起来方便快捷嘛,便于携带,易于在演示系统中使用,开发时可立即进入状态. 下载地址: http://beansoft.java-cn.org/download/mysql6green.7z 2.24 MB 下载后用 7Zip, WinRAR 最新版等软件解压缩即可.以下是详细说明:MySQL 6 绿色精简版(BAT版本)By BeanSoft(beansoft@126.com) 2008-07-02http://beansoft.blogjava.net/ MySQL 6 支持外键,视图存储过程,事务等功能(绿色精简版测试通过,支持这些功能),非常方便进行开发(尤其是MyEclipse生成一对多,多对多的Hibernate/JPA映射代码,就更方便快捷了,事务功能则可以检验Hibernate或者Spring整合Hibernate时是否正确处理了事务,如果失败的话会无法真正插入数据). 版本是: 6.0.5alpha. 为了方便开发,把启动后的默认编码方式设置成为了GBK.可以配合MySQL-Front或者开源软件HeidiSQL来管理数据库. 而配合免费的MySQL管理工具 导航猫免费版(Navicat Lite),可获得不低于SQL Server的易用度, 例如可视化建表, 修改表结构, 创建外键, 修改数据, 执行查询等功能,此软件的中文版可以在http://www.navicat.com.cn/download.html 下载:*非商业 - 免费精简版 产品名字 版本 大小 下载 Navicat for MySQL 简体中文 (Windows版)*非商业使用 8.0.27 7.7 MB 地址1 地址2 Navicat for MySQL 英文 (Mac OS X 通用二进制)*非商业使用 7.1.3 6.6 MB 地址1 地址2 Navicat for MySQL 英文(Linux版)* 非商业使用 8.0.27 20 MB 地址1 地址2 MySQL 6 绿色版使用批处理(BAT)文件执行,可以随意启动停止,使用非常方便,也很容易作为开发演示或者作为最终产品的一部分发布. 使用: 下载后解压缩到磁盘上的任意目录, 可以看到多出了一个 mysql6green 的目录. 打开这个目录, 有以下的几个文件:文件 说明 [bin] MySQL 的二进制文件 [data] MySQL 数据库文件 [share] MySQL 英文资源文件 mysql_start.bat 启动 MySQL, 双击后如果没有错误的话可以在系统进程中看到 mysqld-nt.exe, 并且可以通过 mysql 管理工具连接上, 端口 3306, 用户名 root, 密码为空 mysql_stop.bat 停止 MySQL mysql绿色版.htm 介绍文件 原理: 首先只保留了 MySQL 的最少运行文件来减少所占用的空间. 当然如果你愿意的话留下所有的 Mysql 6 程序文件也没有问题. 然后根据 mysqladmin.exe 和 mysqld-nt.exe 的命令行参数进行工作. mysqld-nt.exe --verbose --help 可以看到所有能够使用的参数.mysql_start.bat@echo off@echo Mysql startup ...start bin\mysqld.exe --default-character-set=gbkexit 以不需要配置文件, 默认字符集为GBK的方式来启动 Mysql.mysql_stop.bat@echo offREM Mysql shutdown ...bin\mysqladmin --user=root --password= shutdown 以 root 用户连接到 MySQL 执行 shutdown 命令来关闭服务器.一些参考命令:创建存储过程:CREATE PROCEDURE `sp_family`()select * from
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值