新手Centos7安装mysql,并使用libzdb数据库链接池连接数据库
来源:互联网 发布:手机淘宝在哪领优惠券 编辑:程序博客网 时间:2024/05/21 03:20
最近公司服务要从Windows迁移到linux
决定 用Centos,数据库mysql
但是从来没搞过,从零开始,百度!
下载的CentOS7.0,(后来朋友说7.1版本比7.0好太多)测试机是安装的虚拟机,设置的物理桥接模式的网络
网上说centos自带mariadb数据库,想要安装mysql,需要卸载mariadb(步骤自己百度)
然后最保险的安装mysql的方式是 通过yum自动安装,这样mysql需要关联的东西会自己安装
重点最好最好最好从官网下载yum源文件,读官方文档。连接:http://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
我之前是从百度来的方式:
1. 下载mysql的repo源(当前路径会下载一个文件,后面需要使用这个)
$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm这个链接最好找官网的新版本。
2. 安装mysql-community-release-el7-5.noarch.rpm包
$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
安装这个包后,会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo。
3. 安装mysql
$ sudo yum install mysql-server
安装完后,就可以登录,第一次登录不需要密码,登录上后要重置密码
重置密码前,首先要登录
$ mysql -u root
登录时有可能报这样的错:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2),原因是/var/lib/mysql的访问权限问题。下面的命令把/var/lib/mysql的拥有者改为当前用户:
$ sudo chown -R openscanner:openscanner /var/lib/mysql
然后,重启服务:
$ service mysqld restart
接下来登录重置密码:
$ mysql -u root
mysql > use mysql;mysql > update user set password=password(‘123456‘) where user=‘root‘;mysql > exit;
5. 开放3306端口
$ sudo vim /etc/sysconfig/iptables
添加以下内容:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
保存后重启防火墙:
$ sudo service iptables restart
这样从其它客户机也可以连接上mysql服务了。
好像还要安装mysql-devel开发包,我也不知道是不是必须得安装,好像不安装,后面使用libzdb库的时候,会不支持mysql的连接
$ sudo yum install mysql-devel下面 安装libzdb,Libzdb 实现了一个小型、快速、易用、线程安全的连接池数据库API,可连接多种数据库,零配置,通过URL指定连接信息。
它具有以下特性:
1.线程安全的数据库连接池
2.连接到多个数据库系统
3.零配置,通过URL指定连接信息
4.支持MySQL, PostgreSQL, SQLite and Oracle 可以不断进行扩展。
支持平台:ios、Linux、FreeBSD、Solaris、OpenBSD和其他 POSIX 系统。
支持开发语言:C、C++、Object C。
缺点:不支持window,所以若要在windows下进行开发,可能不是很方便,但是libzdb的邮件列表反馈很及时,在列表中提出的问题,
一般一两天就会得到官方工程师的回答。
它的几个相关网站如下:
http://www.tildeslash.com/libzdb/# libzdb的offiCal website; libzdb是由这家公司开发的,所以质量应该可以值得信任
libzdb的代码使用googlecode上代管https://code.google.com/p/libzdb/(这段是copy来的)
Libzdb源码结构:
各模块简单分析
1. Exception
异常模块,主要是为整个系统提供异常处理接口。处理异常包括数据库异常和内存异常等其他非法操作。
捕获异常的好处是,不使程序由于异常而非法退出。
2.System
一些时间处理、内存操作、系统操作等接口。方便其他模块调用。
3.Net
统一资源定位符(UniformResource Locator,缩写为URL)是对可以从互联网上得到的资源的位置和访问方法的
一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件
的位置以及浏览器应该怎么处理它。
整个数据库的初始化和代理对象的初始化,都是通过这个URL来进行处理。
示例:
mysql://localhost:3306/test?user=root&password=swordfish
这个模块是针对这个URL地址进行处理的函数接口。
4.Util
这个模块主要负责一些工具的封装,封装了字符串的处理函数,还封装了面向对象中的向量(vector)、StringBuffer等工具,
方便整个模块的处理。
5.Db
这个模块主要包括实现连接代理模式、结果集代理模式、SQL语句代理模式和数据库连接池、各类数据库连接的
真实实现等。这个模块是整个程序的核心。
代码地址:https://github.com/snaiper80/libzdb
官网:http://www.tildeslash.com/libzdb/
多看官方文档,虽然英文有限,强制自己看吧
下载版本,解压tar -zxvf libzdb-3.1.tar.gz
进入到解压的路径中
如果安装好mysql的话,直接执行下面的指令即可
./configure
make
make install
但是我的版本这样编译了,连接mysql的时候,报错,说不支持
后来通过浸淫linux开发多年的朋友帮忙,解决问题了,解决方法是
第一步./configure的时候,要指定mysql的配置,即后面加参数,--with-mysql=/usr/bin/mysql_config
/usr/bin/mysql_config这个路径根据自己的情况,找到自己的安装路径。重新编译了就可以了。
最后贴代码:
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<sys/types.h>#include<zdb/zdb.h>#include<zdb/Exception.h>#include<zdb/Connection.h>#include<zdb/URL.h>/* * 作者:搁浅的贝 * 编译方式:gcc main.c -I /usr/local/include/zdb/ -o main -lzdb * */int main(int agc, char** argv){URL_T url = URL_new("mysql://localhost/mysql?user=root&password=root123");if (url == NULL){printf("URL parse ERROR!/n");return 0;}ConnectionPool_T pool = ConnectionPool_new(url);//设置初始化连接数目 ConnectionPool_setInitialConnections(pool, 20);// //开启线程池ConnectionPool_start(pool);//从线程池中取出连接(活动连接数+1)Connection_T con = ConnectionPool_getConnection(pool);//执行SQL语句,返回结果集ResultSet_T result = Connection_executeQuery(con, "select * from user");//输出全部连接数目 printf("ALL NUMBE:%d\n", ConnectionPool_size(pool));//输出活动连接数目printf("ACTIVE NUMBER:%d-----------------------\n", ConnectionPool_active(pool));while (ResultSet_next(result))//游标滑到下一行{//获取列名 ResultSet_getColumnName//获取列值 ResultSet_getStringprintf("column: %s\n", ResultSet_getColumnName(result, 2));//根据列名获取值ResultSet_getStringByNameprintf("stringByname: %s\n ", ResultSet_getStringByName(result, "Host"));//根据列索引获取列值 [注意索引是从1开始不是0]printf("getString:%s\n ", ResultSet_getString(result, 3));printf("next===========================\n ");}//关闭连接(活动连接-1)Connection_close(con);//将连接池与数据库分离ConnectionPool_stop(pool);ConnectionPool_free(&pool);URL_free(&url);return 0;}
借鉴好多人的经验,东借西凑,整理的文章,请喷
- 新手Centos7安装mysql,并使用libzdb数据库链接池连接数据库
- libzdb --- mysql 的一个数据库连接池代码分析
- CentOS7安装mysql数据库
- centos7 安装MySQL数据库
- centos7 安装MySQL数据库
- CentOS7安装mysql数据库
- CentOS7安装mysql数据库
- CentOS7安装MySQL数据库
- centos7安装mysql数据库
- centos7 mysql数据库安装
- Centos7 安装mysql数据库
- centos7下使用yum安装mysql并创建用户,数据库以及设置远程访问
- JDBC连接并使用mysql数据库
- centos7中发布项目并安装mysql数据库
- linux centos7 安装mysql数据库
- centos7安装配置mysql数据库
- hadoop hive安装,并使用mysql数据库
- Mac安装、配置并使用MySQL数据库
- jQuery即点即改
- sql中ROW_NUMBER函数的理解
- POJ-3349 简单哈希表的应用
- iOS分类中通过runtime添加动态属性
- Leetcode 187. Repeated DNA Sequences[medium]
- 新手Centos7安装mysql,并使用libzdb数据库链接池连接数据库
- Could not publish server configuration for Tomcat v7.0 Server at localhost. Multiple Contexts have a
- LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- div隐藏时jquery outerHeight(true);值有问题
- 项目中并发下单的问题怎么解决?
- ajax实现页面异步删除
- macos/ios 跨平台宏定义
- Linux 进程调度策略参考博文
- java基础总结1