作者:zieckey(zieckey@yahoo.com.cn)
All Right Reserved!
1. mysql在linux下的编译和安装
[root@localhost zieckey]# mkdir /usr/local/mysql
[root@localhost zieckey]# cp mysql-4.0.12.tar.gz /home/
[root@localhost root]# cd /home/
解压
[root@localhost home]# tar zxvf mysql-4.0.12.tar.gz
[root@localhost home]# cd mysql-4.0.12
配置,生成Makefile
[root@localhost mysql-4.0.12]# ./configure --prefix=/usr/local/mysql --without-debug --with-extra-charsets=gb2312 --enable-assembler --without-isam --without-innodb --with-pthread --enable-thread-safe-client
编译
[root@localhost mysql-4.0.12]# make
安装
[root@localhost mysql-4.0.12]# make install
[root@localhost mysql-4.0.12]# scripts/mysql_install_db
创建一个数据库管理员
[root@localhost mysql-4.0.12]# groupadd mysql
[root@localhost mysql-4.0.12]# useradd -g mysql mysql
改变权限。
[root@localhost mysql]# chown -R root /usr/local/mysql
[root@localhost mysql]# chown -R mysql /usr/local/mysql/var
[root@localhost mysql]# chgrp -R mysql /usr/local/mysql
配置环境变量,以便于编程
[root@localhost mysql-4.0.12]# cd /usr/local/mysql/bin/
[root@localhost bin]# export PATH=$PATH:/usr/local/mysql/bin/
[root@localhost bin]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/mysql/
[root@localhost bin]# env
启动mysql服务器
[root@localhost root]# cd /usr/local/mysql/bin/
[root@localhost bin]# ./mysqld_safe -u mysql&
Starting mysqld daemon with databases from /usr/local/mysql/var
查看是否启动了
[root@localhost root]# pgrep mysql
15931
15950
15951
启动一个mysql客户端
[root@localhost root]# /usr/local/mysql/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.0.12
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
创建一个数据库
mysql> create database cusemysql;
Query OK, 1 row affected (0.00 sec)
并使用这个数据库
mysql> use cusemysql;
Database changed
在给数据库内创建一个表
mysql> create table children(childno int not null unique,fname varchar(20),age int);
Query OK, 0 rows affected (0.00 sec)
在该表内插入一项数据
mysql> insert into children values(5,"花儿",10);
Query OK, 1 row affected (0.00 sec)
mysql> select * from children;
+---------+-------+------+
| childno | fname | age |
+---------+-------+------+
| 5 | 花儿 | 10 |
+---------+-------+------+
1 row in set (0.03 sec)
mysql>
2. 下面进行具体的操作
插入:insert
好的,我们现编辑一段c代码,取名为insert.c
///////////////////////////////////
/* insert.c */
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
/*注意哦,上面也可以是mysql.h的绝对地址,一般在mysql下的include目录下,仔细看看你的在哪里?*/
int main(int argc, char *argv[])
{
MYSQL my_connection;
int res;
mysql_init(&my_connection);
/*mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL)*/
if (mysql_real_connect(&my_connection, "localhost", "root", "","cusemysql",0,NULL,CLIENT_FOUND_ROWS))
{
printf("Connection success\n");
res = mysql_query(&my_connection, "insert into children values(11,'Anny',5)");
if (!res)
{
printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(&my_connection));
/*里头的函数返回受表中影响的行数*/
}
else
{
//分别打印出错误代码及详细信息
fprintf(stderr, "Insert error %d: %s\n",mysql_errno(&my_connection),mysql_error(&my_connection));
}
mysql_close(&my_connection);
}
else
{
fprintf(stderr, "Connection failed\n");
if (mysql_errno(&my_connection))
{
fprintf(stderr, "Connection error %d: %s\n",mysql_errno(&my_connection),mysql_error(&my_connection));
}
}
return EXIT_SUCCESS;
}
/////////////////////////////////////////////
代码写完了,要编译哦
[root@zieckey mysql]# gcc -o insert insert.c
/tmp/ccyHfsX2.o(.text+0x1e): In function `main':
: undefined reference to `mysql_init'
/tmp/ccyHfsX2.o(.text+0x47): In function `main':
: undefined reference to `mysql_real_connect'
/tmp/ccyHfsX2.o(.text+0x76): In function `main':
: undefined reference to `mysql_query'
/tmp/ccyHfsX2.o(.text+0x9a): In function `main':
: undefined reference to `mysql_affected_rows'
/tmp/ccyHfsX2.o(.text+0xbc): In function `main':
: undefined reference to `mysql_error'
/tmp/ccyHfsX2.o(.text+0xcf): In function `main':
: undefined reference to `mysql_errno'
/tmp/ccyHfsX2.o(.text+0xf5): In function `main':
: undefined reference to `mysql_close'
/tmp/ccyHfsX2.o(.text+0x11f): In function `main':
: undefined reference to `mysql_errno'
/tmp/ccyHfsX2.o(.text+0x135): In function `main':
: undefined reference to `mysql_error'
/tmp/ccyHfsX2.o(.text+0x148): In function `main':
: undefined reference to `mysql_errno'
collect2: ld returned 1 exit status
[root@zieckey mysql]#
头文件和库文件位置没有指定
[root@zieckey mysql]# gcc -o insert insert.c -I/usr/include/mysql/ -L/usr/lib/mysql/
/tmp/cc4gdmlp.o(.text+0x1e): In function `main':
: undefined reference to `mysql_init'
/tmp/cc4gdmlp.o(.text+0x47): In function `main':
: undefined reference to `mysql_real_connect'
/tmp/cc4gdmlp.o(.text+0x76): In function `main':
: undefined reference to `mysql_query'
/tmp/cc4gdmlp.o(.text+0x9a): In function `main':
: undefined reference to `mysql_affected_rows'
/tmp/cc4gdmlp.o(.text+0xbc): In function `main':
: undefined reference to `mysql_error'
/tmp/cc4gdmlp.o(.text+0xcf): In function `main':
: undefined reference to `mysql_errno'
/tmp/cc4gdmlp.o(.text+0xf5): In function `main':
: undefined reference to `mysql_close'
/tmp/cc4gdmlp.o(.text+0x11f): In function `main':
: undefined reference to `mysql_errno'
/tmp/cc4gdmlp.o(.text+0x135): In function `main':
: undefined reference to `mysql_error'
/tmp/cc4gdmlp.o(.text+0x148): In function `main':
: undefined reference to `mysql_errno'
collect2: ld returned 1 exit status
[root@zieckey mysql]#
gcc还是找不到头文件,下面我们可以这样,指定gcc专门找 mysqlclient 之类的库
[root@localhost testmysql]# gcc -o insert insert.c -lmysqlclient -I/usr/local/mysql/include/mysql/ -L/usr/local/mysql/lib/mysql
我用用 -lmysqlclient 选项就可以了(前面我们生成的库文件是 libmysqlclient.so.12.0.0 等,
去掉前面的lib和后面的版本标志,就剩下 mysqlclient 了所以是 -lmysqlclient )。
ok,现在我们执行看看
[root@zieckey mysql]# ./insert
Connection Success
Inserted 1 rows
如果执行出错,就先执行以下三句脚本(15.0.0根据版本不同而不同)
ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so.15.0.0 /usr/lib/libmysqlclient.so
ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so.15.0.0 /usr/lib/libmysqlclient.so.15
ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so.15.0.0 /usr/lib/libmysqlclient.so.6.0.0
year,果然可以,呵呵
不信到mysql下看看表children中是否多了刚才插入的那一行数据
mysql> select * from children;
+---------+-------+------+
| childno | fname | age |
+---------+-------+------+
| 5 | 花儿 | 10 |
| 11 | Anny | 5 |
+---------+-------+------+
2 rows in set (0.00 sec)
总结:这里我们了解了MySQL数据库在Linux下的安装,以及一些基本的操作,并且我们可以通过C语言来操作MySQL数据库,这真是太令人兴奋了。欢迎大家交流
分享到:
相关推荐
linux下C语言连接mysql数据库.docx
linux下C语言连接mysql的样例 * 需先安装mysqlclient库 * linux下C语言连接mysql的样例 * */ #include #include #include<mysql/mysql.h> void create(MYSQL *conn_ptr) { int ret; ret = mysql_query(conn_...
linux下C语言连接MySQL数据库.docx
此文档使用GTK+2.0做了一个小的界面,不过不怎么完整,采用C语言连接MYSQL数据库 代码能运行的前提是: 1.这是centos上的一个小程序,需要在linux的环境下(不知道能否在windows上) 2.linux上装有MYSQL数据库 3....
既涵盖理论基础,又囊括案例开发,既包括Linux操作系统和数据库技术的基础知识,又详细介绍MySQL数据库的安装/配置、查询优化、安全管理及MySQL可视化管理工具的使用,并对几种典型的数据库连接技术,如C、PHP、Java...
Linux下连接金仓数据库(ksql)并完成查询、插入、修改表数据实例,修改后可用于oracle及mysql
linux下开发,连接mysql数据库时候用到的头文件和库文件,32位和64位的都有,直接解压根据系统选择32位还是64位,把mysql_include和mysql_lib两个文件夹复制到主文件同级目录,然后makefile里面这样编译gcc -I./...
《Mysql 最后程序的总结—— Linux系统C语言编程连接MySql数据库实现的用户角色权限管理系统》 修改的问题: 1、新增 添加用户组模块; 2、新增 显示用户组模块; 3、修改 新增用户模块 选择 其所属用户组 并把...
基于Ubuntu14.04 环境开发,采用Mysql数据库,将数据库文件导入运行,程序分为服务端和客户端,服务端有两个功能,一个是监听客户端连接,第二个是管理员操作,可以对学生增删查改。客户端主要是学生可以通过网络...
1、Linux系统C语言编程连接MySql数据库实现的用户 用户组 用户策略 管理系统(getopt解析命令行参数).c 代码的源文件。 user-usergroup-authoritys.vsd user-usergroup-authoritys.jpg 数据库的图,以及图片。 2、...
在centos6.5的32位系统下,通过c连接mysql数据库,必须要通过command.txt里面的命令来执行query,insert,delete ,只需要修改文件名就可以了,肯定是可以运行的。
表字段描述: 1、users表(用户)字段有(id_ |name_名称|create_time_创建时间|creator_id_由谁创建|认证方式|dyn_sn_口令认证方式所需口令|dyn_pass_sn KEY认证方式所需文件|remark_描述) 2、usergroups表(用户...
linux_下_C_语言_连接_MySQL数据库_(详细注释).txtlinux_下_C_语言_连接_MySQL数据库_(详细注释).txt
使用C和C++连接MySQL数据库并进行常用的数据库操作。实现了简单的学生(或职工)信息管理系统,源于大学时的数据库课程设计 软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、...
此份代码在Linux下利用C语言连接MySQL数据库,实现仓库管理的功能。在Linux(Ubuntu 18)下安装好MySQL(V5.7)数据库和GCC之后,直接Make即可以编译出可执行的代码了。
使用使用navicat连接远程linux mysql数据库出现10061未知故障,设置使用ssh连接后出现2013故障 本机环境:win10 navicat premium mysql数据库主机环境:Linux version 4.15.0-42-generic (buildd@lgw01-amd64-023)...
连接MySQL数据库有两种方法:第一种是使用ADO连接,不过这种只适合Windows平台;第二种是使用MySQL自己的C API函数连接数据库。我是在Linux平台下开发,所以就采用第二种方法,有很多Api函数,但是常用的就几个,我...
Linux 下C语言连接mysql实例详解 第一步: 安装mysql, 参考://www.jb51.net/article/39190.htm 第二步: 安装mysql.h函数库 sudo apt-get install libmysqlclient-dev 执行之后就可以看到/usr/include/MySQL目录...
1. MySQL的安装与配置: 在Ubuntu下安装MySQL方法很简单,使用如下命令: 代码如下:sudo apt-get install mysql-server 安装的过程中系统会提示设置root密码,此过程可以跳过,但是建议在安装时提示设置root密码的...