<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[在linux下从源码包安装libmysqlclient,mysql-server,mysql-devel...各有什么不同呢?]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Wed, 03 Feb 2016 07:29:15 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：由于数据库服务器安装在数据库机上，因此，在linux中只需安装mysql的客户端库就可以了。那么这个PHP下的mysql client要不要安装？再就是如果想在这台机器上连接mysql&nbsp;&nbsp;server，客户端要不要安一个呢，当然要，且只安mysql的client客户端。<br/>方法一：从编译好的包里释放安装：<br/>一）有rpm包的情况：<br/>MySQL-client-5.0.22-0.i386.rpm //mysql -uroot 这个client的一个包 标准MySQL客户程序。你可能总是需要安装这个包。<br/>MySQL-devel-5.0.22-0.i386.rpm&nbsp;&nbsp;//要想用c去连接这个mysql的lib库<br/>(安装好以后，在 /usr/include/mysql/ 目录中存放有libmysqlclient的头文件mysql.h，在 /usr/lib/mysql/ 目录中存放有mysql的库文件，但只有.a结尾的(即静态库)库文件(包括libmysqlclient.a)，没有.so(共享库)文件。)<br/>键入以下命令安装:<br/> <br/>#rpm -ivh MySQL-client-5.0.22-0.i386.rpm<br/>#rpm -ivh MySQL-devel-5.0.22-0.i386.rpm<br/><br/>使用如下命令编译一个简单的测试程序(代码在本文结尾处给出)：<br/>#gcc -c -I/usr/include/mysql mysql-test.c<br/>此命令成功生成了目标文件mysql-test.o。<br/>继续键入以下命令。<br/>#gcc -o --static mysql-test mysql-test.o -L/usr/lib/mysql -lmysqlclient<br/><br/>注意参数的顺序，gcc有时会因为某些参数顺序不对而报错，某些相关参数的具体顺序应该如何，还望高人指点。<br/>以上命令确给出了数不清的“引用未定义符号”的错误信息，引用未定义符号的是libmysqlclient.a<br/>带着希望折腾了许久，最后决定从源码包安装mysql客户端程序库。<br/> <br/>卸载MySQL-client与MySQL-devel：<br/>#rpm -e MySQL-client<br/>#rpm -e MySQL-devel<br/><br/>二）yum 安装，其实是一样的，只是在网上安装，看来centos7上新的db数据库会向mariadb转的趋势啊:<br/>[root@iZ25z0ugwgtZ logs]# yum search mysql&#124;grep dev<br/>mysql++-devel.x86_64 : MySQL++ developer files (headers, examples, etc.)<br/>mariadb.x86_64 : A community developed branch of MySQL<br/>mariadb-devel.i686 : Files for development of MariaDB/MySQL applications<br/>mariadb-devel.x86_64 : Files for development of MariaDB/MySQL applications<br/><br/><br/>方法二：从源码里通过参数只编译安装客户端：<br/>[root@iZ25dcp92ckZ vhost]# ldconfig -v&#124;grep mysql<br/>/usr/lib64/mysql:&nbsp;&nbsp;这个路径在哪儿配置的呢？在：vi /etc/ld.so.conf&nbsp;&nbsp;自己加上想要找的动态链接库：/usr/local/inotify-tools-3.14/lib<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libmysqlclient.so.18 -&gt; libmysqlclient.so.18.0.0<br/>从源码包安装mysql客户端程序库。<br/>#tar -zxvf mysql-5.0.22.tar.gz (mysql-5.0.22.tar.gz位于/root目录)<br/>#cd mysql-5.0.22<br/>进入mysql-5.0.22目录，阅读 INSTALL-SOURCES 文件，并看到几个关键选项：<br/>1、--without-server <br/>只编译安装客户端程序库，不编译mysql服务器程序，这在本机只需要libmysqlclient时很有用。<br/><br/>Mysql高版本用了boost和cmake（MySQL 5.5版本以后，使用CMake编译工具）参数是这样和./configure对应的，参见链接，http://www.linuxeye.com/Linux/MySQL-cmake-options.html，-DWITH_SERVER=0，总之，这个cmake有些参数不支持和configure还不太一样，这个DWITH_SERVER 是臆想出来的：<br/><textarea name="code" class="php" rows="15" cols="100">
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DWITH_SERVER=0 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=../boost_1_59_0&nbsp;&nbsp;-DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DENABLE_DTRACE=0 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_EMBEDDED_SERVER=1&nbsp;&nbsp;&nbsp;&nbsp;

make -j `grep processor /proc/cpuinfo &#124; wc -l`&nbsp;&nbsp;&nbsp;&nbsp;
make install
</textarea><br/><br/>2、--enable-thread-safe-client <br/>让libmysqlclient中的例程具有线程安全性，要编写多线程的mysql客户端程序时就少不了了，这要求本地拥有多线程库。<br/>3、--prefix 指定安装目录<br/>启动configure脚本：<br/>#mkdir /usr/local/mysql<br/>#./configure --without-server --enable-thread-safe-client --prefix=/usr/local/mysql<br/>大概6分钟后，configure脚本生成好所有的Makefile后退出。<br/>当前目录下执行make进行编译：<br/>#make<br/>这个过程除了时间长一点以外没有别的，大概一个钟头后make完成编译任务。<br/>安装：<br/>#make install<br/>这个过程也比较快，约两三分钟。<br/>安装完成以后，mysql.h文件在 /usr/local/mysql/include/mysql/目录中(这里include目录中还有一个mysql子目录)。<br/>以lib开头的库文件在/usr/local/mysql/lib/mysql/目录中(与mysql.h的情况一样，这里lib目录中还有一个mysql子目录)。<br/>此时再来链接测试程序的目标文件：<br/>#gcc -o mysql-test mysql-test.o -L/usr/lib/mysql -lmysqlclient<br/>OK，一切正常，链接成功。<br/>执行一下：<br/>#./mysql-test<br/>系统这时又发出错误提示：Loading libmysqlclient.so.15 Error; No Such File!<br/>将/usr/local/mysql/lib/mysql/目录中的libmysqlclient.so.15.0.0复制到/usr/lib/目录下：<br/>#cp /usr/local/mysql/lib/mysql/libmysqlclient.so.15.0.0 /usr/lib/libmysqlclient.so.15<br/>#./mysql-test<br/>屏幕打印出:mysql_init() successed.后就不动了.<br/>约莫90秒后打印libmysqlclient的提示信息：Can not connect to mysql server(110)<br/>这时在windows xp的msdos控制台键入：<br/>&gt;netstat -na<br/>看到了系统已经打开了3306端口，即mysql server确实在运行。<br/>最后注意到xp中启用了系统防火墙, 禁用系统防火墙后回到linux的ppty键入:<br/>#./mysql-test<br/>这时，黎明的曙光终于出现了，提示信息告诉我，它已经连接上了XP中的mysql server。<br/><br/>以上主要参考：http://blog.chinaunix.net/uid-26466663-id-3358199.html<br/><br/>mysql中的两个包 libmysqlclient-devel和mysql-devel 有什么区别啊，为什么安装了mysql-devel就不能安装 libmysqlclient-devel了？<br/>MySQL服务器。除非你只是想要与运行在其他机器上MySQL服务器连接，否则你将需要它。 
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 在linux下从源码包安装libmysqlclient,mysql-server,mysql-devel...各有什么不同呢?]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>