开发环境:

  • ubuntu16.04
  • mysql5.7.9
  • 原生C API
  • VIM

配置远程连接

配置mysql允许远程连接的方法默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/my.conf文件。

一、修改/etc/mysql/my.conf

找到bind-address = 127.0.0.1这一行

改为bind-address = 0.0.0.0即可

二、为需要远程登录的用户赋予权限

1、新建用户远程连接mysql数据库

grant all on *.* to admin@'%' identified by '123456' with grant option;  flush privileges;

允许任何ip地址(%表示允许任何ip地址)的电脑用admin帐户和密码(123456)来访问这个mysql server。注意admin账户不一定要存在。

2、支持root用户允许远程连接mysql数据库

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;

修改完后重启mysql服务

sudo systemctl restart mysqld

演示连接demo

github源码地址

编译运行

  • 查找依赖的头文件

    mysql_config --include

  • 建立.so库的软连接,供可执行文件调用

    sudo ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib/

  • 编译

    gcc -o test_mysql test_mysql.c -I/usr/local/mysql/include -L/usr/local/mysql/lib/ -lmysqlclient

  • 结果

liangjf@ubuntu:~/study/mysql$ ./test_mysql
共9个记录,每个记录3字段
id name phone 1 aaa 7774090
2 abc 7774099
3 acb 7794099
4 bcb 8794099
5 bcc 8894099
6 qwe 8494099
7 azq 6544099
8 njhu 8544099
9 ert 1544099

出现的问题:

fatal error: mysql/plugin_auth_common.h

查找是有这个问题,但是编译失败,证明是编译时指定的mysql/include路径错误了

liangjf@ubuntu:~/study/mysql$ sudo find / -name plugin_auth_common.h
/usr/local/mysql-5.7.9-linux-glibc2.5-x86_64/include/mysql/plugin_auth_common.h
/usr/local/mysql-5.6.27-linux-glibc2.5-x86_64/include/mysql/plugin_auth_common.h
/usr/include/mysql/mysql/plugin_auth_common.h

一开始我用的是第三个路径,这个路径是错的,后来用了第一个路径就ok了。

出现一大叠错误,看起来就是连接mysqlclient库失败了。

失败的原因肯定是指定的路径有问题,

liangjf@ubuntu:~/study/mysql$ sudo find / -name libmysqlclient.so
/usr/local/mysql-5.7.9-linux-glibc2.5-x86_64/lib/libmysqlclient.so
/usr/local/mysql-5.6.27-linux-glibc2.5-x86_64/lib/libmysqlclient.so
/usr/lib64/mysql/libmysqlclient.so

最初我用的路径是/usr/lib64/mysql/,后来选用/usr/local/mysql-5.7.9-linux-glibc2.5-x86_64/lib/就编译ok了。

执行可执行文件失败。

liangjf@ubuntu:~/study/mysql$ ./test_connect
./test_connect: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

编译时可以找到动态库,而执行时木有,是因为我的mysql的lib是单独安装,没有加进去环境变量中。两种解决办法:

  • /usr/local/mysql-5.7.9-linux-glibc2.5-x86_64/lib/加入环境变量中
  • /usr/local/mysql-5.7.9-linux-glibc2.5-x86_64/lib/libmysqlclient.so.20拷贝到/usr/lib中。因为这个路径是可执行文件去自动查找动态库的路径。

linux C API连接并查询mysql5.7.9的更多相关文章

  1. linux shell脚本连接oracle查询数据插入文件和日志文件中

    #!/bin/sh sqlplus "用户名/密码@数据库"<<EOF  或者只有一个库的 :sqlplus "用户名/密码"<<EOF ...

  2. C++连接mysql的两种方式(ADO连接和mysql api连接)

    一.ADO连接mysql 1.安装mysql-5.5.20-win32.msi和mysql-connector-odbc-5.3.4-win32.msi(一般两个安装程序要匹配,否则可能连接不上)  ...

  3. C API 连接MySQL及批量插入

    CMySQLMgr.h: #ifndef _CMYSQLMGR_H_ #define _CMYSQLMGR_H_ #include <iostream> #include "my ...

  4. Linux系统下连接校园网Drcom客户端教程(广东工业大学)

    这篇教程写给想要学习Linux系统或者在Linux系统下有需要使用Drcom上网的同学,在我疯狂踩坑,经过n多次的刷机装机实验,体验不同发行版本的linux系统后,终于懂得怎么连接上drcom,想想连 ...

  5. (转)CentOS/Linux 解决 SSH 连接慢

    CentOS/Linux 解决 SSH 连接慢 原文:http://blog.csdn.net/doiido/article/details/43793391 现在连接linux服务器一般都是使用SS ...

  6. 转载: CentOS/Linux 解决 SSH 连接慢

    CentOS/Linux 解决 SSH 连接慢 现在连接Linux服务器一般都是使用SSH远程连接的方式.最近新装了一台服务器,发现telnet时速度很快,ping时一切也正常,但SSH连接的时候却很 ...

  7. Linux下使用fstatfs/statfs查询系统相关信息

    Linux下使用fstatfs/statfs查询系统相关信息 1.   功能 #include < sys/statfs.h > int statfs(const char *path, ...

  8. linux安装常用软件和查询基本信息

                                                                          linux安装常用软件和查询基本信息 1. 安装常用软件 [ ...

  9. Netruon 理解(11):使用 NAT 将 Linux network namespace 连接外网

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

随机推荐

  1. Jquery的树插件jqxTreeGrid的使用小结(实现基本的增删查改操作)

    一.引入相应的js <link rel="stylesheet" href="../../jqwidgets/styles/jqx.base.css" t ...

  2. java webservice maven spring Class Not Found Exception解决

    project clean——>maven clean——>update maven ——>server clean——>build project ——>maven i ...

  3. [leetcode]206. Reverse Linked List反转链表

    Reverse a singly linked list. Input: 1->2->3->4->5->NULL Output: 5->4->3->2- ...

  4. 多因子降维法(MDR,Multifactor Dimensionality Reduction )

    多因子降维法(MDR,multifactor dimensionality reduction)   多因子降维法(MDR,Multifactor Dimensionality Reduction ) ...

  5. BZOJ 1001 狼抓兔子 (最小割转化成最短路)

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 27715  Solved: 7134[Submit][ ...

  6. Word2007发布博客

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...

  7. java并发编程实战:第十二章---并发程序的测试

    并发程序中潜在错误的发生并不具有确定性,而是随机的. 安全性测试:通常会采用测试不变性条件的形式,即判断某个类的行为是否与其规范保持一致 活跃性测试:进展测试和无进展测试两方面,这些都是很难量化的(性 ...

  8. 咏南中间件当作WEB SERVER使用方法

    咏南中间件当作WEB SERVER使用方法 1)开启咏南中间件 2)浏览器打开http://localhost:5566/web?page=echo.html

  9. TSQL--使用CTE完成递归查询

    CREATE TABLE TB001( CategoryId INT PRIMARY KEY, ParentCategoryId INT, CategoryName NVARCHAR(200))GO ...

  10. 构建命令maven install 打包不是最新的代码

    问题: 之前一直用的是mvn install 命令来构建项目,但是最近发现最新的代码没有在war包中.之前看的说 mvn install 命令会执行之前的所有阶段,会被编译,测试,打包. 经查最后采用 ...