下面先给出MySQL连接前的官方文档

Application programs should use this general outline for interacting with MySQL:

1. Initialize the MySQL library by callingmysql_library_init(). This function exists in both thelibmysqlclientC client library and thelibmysqldembedded server library, so it is used whether you build a regular client program by linking with the-libmysqlclientflag, or an embedded server application by linking with the-libmysqldflag.

2. Initialize a connection handler by callingmysql_init()and connect to the server by callingmysql_real_connect().

3.Issue SQL statements and process their results. (The following discussion provides more information about how to do this.)

4.Close the connection to the MySQL server by callingmysql_close().

5.End use of the MySQL library by callingmysql_library_end().

可能有朋友会问,为什么要这么怎么做,为什么要做这么多步骤。

我给出的答案是,用某个东西就是更具官方给出的规则进行使用,可以不必知道为什么要这么做,但必须要遵守规则。

由此我们易知首先得mysql_library_init()

然后mysql_init()和mysql_real_connect();

最后为mysql_close()和mysql_library_end();

下面是代码

#include<stdio.h>
#include<stdlib.h>
#include<WinSock2.h>
#include<mysql.h>
#pragma comment(lib, "libmysql")
int main()
{if (mysql_library_init(0, NULL, NULL)){printf_s("could not initialize MySQL library\n");getchar();exit(1);}MYSQL conn;mysql_init(&conn);MYSQL *ret = mysql_real_connect(&conn, "127.0.0.1", "root", "123456", "demo", 0, NULL, 0);if (!ret){printf_s("Failed to connect to database:  %s\n", mysql_error(&conn));getchar();exit(1);}printf_s("successful  database connection\n");mysql_close(&conn);mysql_library_end();getchar();return 0;
}

运行结果如下:

但我们进入debug目录,可以看到exe文件,我们打开他,直接对字符串进行搜索,可以得到如下图所示类容

这是非常不安全的。

虽然,当任意用户登录数据库时无需检验(这些帐号和密码是可以暴露的)

但我觉得这是一个有瑕疵的,所以我们对他进行简单加密。

如下代码所示:

#include <stdio.h>
#include <stdlib.h>
#include <WinSock2.h>
#include <mysql.h>
#pragma comment(lib, "libmysql")//简单加密
char* encrypt(char *Code, int Judge)
{int CodeLen = strlen(Code);//1为ip地址解密if (Judge == 1){for (int i = 0; i < CodeLen; i++){if (i == 3 || i == 5 || i == 7)continue;Code[i] -= 2;}}//用户名解密else if (Judge == 2){for (int i = 0; i < CodeLen; i++)Code[i] -= 3;}//密码解密else if (Judge == 3){for (int i = 0; i < CodeLen; i++)Code[i] -= 1;}//表名加密else{for (int i = 0; i < CodeLen; i++)Code[i] -= 1;}return Code;
}
int main()
{char host[10] = "349.2.2.3";char user[5] = "urrw";char passwd[7] = "234567";char db[5] = "efnp";if (mysql_library_init(0, NULL, NULL)){printf("could not initialize mysql library\n");exit(1);};MYSQL conn;mysql_init(&conn);MYSQL* ret = mysql_real_connect(&conn, encrypt(host, 1), encrypt(user, 2), encrypt(passwd, 3), encrypt(db, 4), 0, NULL, 0);if (!ret){printf_s("failed to connect to database:  %s\n",mysql_error(&conn));}printf_s("successful database connection\n");mysql_close(&conn);mysql_library_end();getchar();return 0;
}

运行结果如下:

现在我们打开exe文件,看看他所处的字符串的地方变成了什么值

如下图所示:

C/C++如何连接MySQL服务器以及简单加密相关推荐

  1. python数据库教程_Python连接mysql数据库及简单增删改查操作示例代码

    1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...

  2. Linux下连接Mysql服务器的方式

    一:mysql连接简介 1.linux下mysql的连接方式有三种: 本地mysql命令连接 客户端命令连接 脚本语言封装方法连接 2.linux下mysql的连接方法有两种: TCP/IP协议连接 ...

  3. phpMyAdmin链接MySQL拒接_phpmyadmin连接MySQL服务器被拒绝

    phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接.您应该检查配置文件中的主机.用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致. 原因: 可能是修改了My ...

  4. python使用pymysql连接mysql_python3使用PyMysql连接mysql数据库的简单示例

    这篇文章主要为大家详细介绍了python3使用PyMysql连接mysql数据库的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小 ...

  5. 在linux中连接mysql数据库服务器_Linux下连接Mysql服务器的方式

    一:mysql连接简介 1.linux下mysql的连接方式有三种: 本地mysql命令连接 客户端命令连接 脚本语言封装方法连接 2.linux下mysql的连接方法有两种: TCP/IP协议连接 ...

  6. 链接mysql服务器的命令是_连接 MySQL服务器的命令是什么?( )_学小易找答案

    [单选题]两块平玻璃构成空气劈尖,左边为棱边,用单色平行光垂直入射,若上面的平玻璃慢慢地向上平移,则干涉条纹 [计算题]迎面而来的两辆汽车的车头灯相距1.0m,问汽车离人多远时它们刚能为人眼所分辨? ...

  7. 连接MySQL服务器

    连接MySQL服务器   MySQL是一种 客户端-服务器 模式的DBMS(数据库管理系统),当然在刚学习的时候一般都将客户端和服务器都装于本地机上:   一般MySQL服务器的端口为3306,这是默 ...

  8. python操作数据库教程_Python连接mysql数据库及简单增删改查操作示例代码

    1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...

  9. Navicat远程连接MySQL服务器

    文章目录 一.准备 二.配置Navicat允许远程连接MySQL数据库 1.使用Navicat直接连接MySQL 2.使用 Navicat 通过 SSH 远程登录后再本地方式连接 MySQL 3.查看 ...

最新文章

  1. datastage配置oracle,IBM Datastage8.5配置问题
  2. 揭晓阿里云神龙团队拿下TPCx-BB排名第一的背后技术
  3. 使用libjpeg进行JPEG图像解码
  4. 学fpga(流水灯)
  5. zabbix监控mysql内存_zabbix通过自定义脚本监控nginx,php-fpm和mysql占用内存数和进程的个数...
  6. Atitit 给投资人的回报 目录 1.1. 经济回报(略) 1 2. 精神文化与学术回报 1 2.1. 提升自我 投资人可以在我们的教育体系提升自我学术水平 1 2.2. 对自己感兴趣的学术领
  7. RaspberryPI 3b 技术总结(包括Linux)
  8. 通用PHM集成开发环境PIDE
  9. librtmp库API介绍及其结构概述
  10. 【Android】NanoHttpd学习(一)
  11. 计算机与科学技术会学机械,计算机科学与技术和机械设计制造及其自动化的区别...
  12. 方面和服务,差别大吗?
  13. 关于数据分析师的4点思考
  14. all boot options are tried的问题解决
  15. 数说CS|中国人民大学高瓴人工智能学院保研生源大起底!
  16. 两宋词人Top10排排座
  17. mysql怎么删除重复数据并且保留其中一条
  18. day05 【异常、线程】
  19. 微信公众号二次开发可以做哪些功能
  20. ssm后台管理系统-04

热门文章

  1. Linux下的常用软件列表
  2. [学习笔记]c#Primer中文版-类设计、static成员、const和readonly数据成员
  3. 那些程序员身上共有的属性,这就是他为什么比你进步快的原因!
  4. 关于BEA-000402和BEA-000438(没有进程来读取写入管道的数据)
  5. 【飞秋怎么用】企业应用
  6. 今天的男生代表甲方的飞鸽传书
  7. 我一定要找到它FreeEIM
  8. 无论做哪种演示红色警戒
  9. 献给汇编初学者-函数调用堆栈变化分析
  10. 最近在写驱动,把所有的资料心得都贴出来啦