关于mysql 5.5和5.6编译安装

mysql 5.5和5.6需要使用cmake,跟以往的mysql编译有了一点区别(以往的是configure,make,make install三部曲)

一共需要的软件如下:

软件 | 版本 | 安装
------------- | -------------
cmake | make | yum install cmake
make | 3.75以上 | yum install make
Perl | | yum install perl
bison | 1.75 and 2.1(1.875不能用) | yum install bison-devel
gcc-c++ | 4.2.1或以上 | yum install gcc-c++
ncurses | | yum install ncurses-devel

备注:centos 6.5支持很好,基本上只要安装以下的就不会有问题,关闭selinux

参考: http://dev.mysql.com/doc/refman/5.6/en/source-installation.html


编译安装

一般编译脚本:

#!/bin/bash

cd mysql源码目录

cmake . -DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/app/mysql/mysql/data \
-DSYSCONFDIR=/app/mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

make

make install

cp ./support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql

保存为bash脚本文件然后执行即可。

备注:

1.常用的参数就是以上的,其他的

参考:
http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html

2.出现提示

Googletest was not found. gtest-based unit tests will be disabled. You can run cmake . -DENABLE_DOWNLOADS=1 to automatically download and build required components from source.
If you are inside a firewall, you may need to use an http proxy: export http_proxy=http://foo.bar.com:80
Configuring done
Generating done
Build files have been written to: /root/soft/mysql-5.6.4-m7

googletest,一个很著名的C++单元测试框架,简称gtest,有丰富的文档可以参考。

所以暂时我们不需要,加上参数-DENABLE_DOWNLOADS=0 就不会提示的,不过即便是提示了,但因为configure done了,所以也没关系。并且cmake的配置缓存会存放在当前文件夹的CMakeCache.txt文件,需要重新编译就只需要删掉这个文件即可

3.mysql 5.5的安装包里面没有my.cnf参考文件(在源码包的support-files目录下),5.6的包和5.1以前的包里面都有,非常怪异- -,而且不同的文件(my-small.cnf, my-medium.cnf, my-large.cnf, and my-huge.cnf)分别对应不同使用规模等级的mysql配置,以下是文件使用的优先级,从上到下排序,当第一层检查到没有文件的时候就会去搜索第二层的文件,如此类推.

文件路径 | 用途 |备注
------------- | -------------
/etc/my.cnf | 全局使用
/etc/mysql/my.cnf | 全局使用
SYSCONFDIR/my.cnf | Global options
$MYSQL_HOME/my.cnf | 服务器配置指定位置|这个就是编译参数-DSYSCONFDIR的对应位置
defaults-extra-file | 由--defaults-extra-file=path这个配置决定
~/.my.cnf | 用户特别配置
~/.mylogin.cnf | 登录配置

详情参考:http://dev.mysql.com/doc/refman/5.6/en/option-files.html

至此编译安装完成.


初始化数据库

因为安装完成后mysql并没有数据库,主要是没有名字为mysql的数据库,这个数据库会存放mysql账号,权限等一系列的信息,是中枢,是数据库的大脑,所以需要初始化,

进入mysql的安装目录并执行初始化脚本

 cd /app/mysql/scripts
 ./mysql_install_db --user=mysql --basedir=/app/mysql --datadir=/app/mysql/data

1.错误提示

./mysql_install_db --user=mysql

FATAL ERROR: Could not find ./bin/my_print_defaults

If you compiled from source, you need to run 'make install' to
copy the software into the correct location ready for operation.

If you are using a binary release, you must either be at the top
level of the extracted archive, or pass the --basedir option
pointing to that location.

需要有basedir和datadir

2.出现warning

WARNING: The host 'testyuan' could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames

需要使用主机名,如果用不了话就只能用ip,并且可能有些libc库不能100%兼容

就加个主机名的hosts就好了,但只是warning,影响级别低.


启动数据库并设置root密码

可以安装提示使用mysqld_safe 启动,然后修改密码

mysqladmin -u root password 'new-password'

也可以使用之前配置好的/etc/init.d/mysql来启动,然后修改密码

service mysql start

也可以在启动后使用mysql_secure_installation 来修改密码

这些命令大部分都在mysql的安装目录,按需使用即可.


检查

检查是否可以连接

/app/mysql/bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.4-m7 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

trouble-shooting

1.编译php使用mysql的时候报错

/app/soft/php-5.3.28/sapi/cli/php: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
make: *** [ext/phar/phar.php] 错误 127
Generating phar.phar
/app/soft/php-5.3.28/sapi/cli/php: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
make: *** [ext/phar/phar.phar] 错误 127

按照提示检查这个文件发现少了库libmysqlclient.so.18, 如提示所述确实找不到了

ldd /app/soft/php-5.3.28/sapi/cli/php
 linux-vdso.so.1 =>  (0x00007fff0ef81000)
 libcrypt.so.1 => /lib64/libcrypt.so.1 (0x0000003d28a00000)
 libz.so.1 => /lib64/libz.so.1 (0x0000003d25e00000)
 libedit.so.0 => /usr/lib64/libedit.so.0 (0x00000037b5800000)
 libncurses.so.5 => /lib64/libncurses.so.5 (0x00000037b7000000)
 libmysqlclient.so.18 => not found
 libgmp.so.3 => /usr/lib64/libgmp.so.3 (0x0000003d03800000)
 libbz2.so.1 => /lib64/libbz2.so.1 (0x0000003d2a200000)
 libpcre.so.0 => /lib64/libpcre.so.0 (0x000000376e000000)
 librt.so.1 => /lib64/librt.so.1 (0x0000003d26200000)
 libm.so.6 => /lib64/libm.so.6 (0x0000003d26600000)
 libdl.so.2 => /lib64/libdl.so.2 (0x0000003d25200000)
 libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003774000000)
 libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x0000003dc3e00000)
 libssl.so.10 => /usr/lib64/libssl.so.10 (0x0000003d03400000)
 libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x0000003d03000000)
 libc.so.6 => /lib64/libc.so.6 (0x0000003d25600000)
 libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003d27200000)
 libfreebl3.so => /usr/lib64/libfreebl3.so (0x0000003d28600000)
 libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003d2ca00000)
 libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003d25a00000)
 /lib64/ld-linux-x86-64.so.2 (0x0000003d24e00000)
 libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x0000003d2c600000)
 libkrb5.so.3 => /lib64/libkrb5.so.3 (0x0000003d2a600000)
 libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003d29200000)
 libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x0000003d2ae00000)
 libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x0000003d2b200000)
 libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003d2aa00000)

最后多方检查发现,这个库是必须存在于/lib64或者/usr/lib64的,无法通过配置文件编译改变位置,而mysql 5.5 后会将这个库生成在安装目录里面,所以做了一个软连接,将他们沟通起来

 ln -s /app/mysql564/lib/* /lib64/

2.mysql 5.5 启动时候报错

MySql server startup error 'The server quit without updating PID file 

google了很多发现5.5都有这个问题,5.6却没有
参考:http://stackoverflow.com/questions/4963171/mysql-server-startup-error-the-server-quit-without-updating-pid-file/25683395#25683395 发现有很多解决办法,不过对于我的问题并没有作用,最后发现mysql文档有提到这个http://dev.mysql.com/doc/refman/5.6/en/charset-server.html,当然我也补充到里面去了。

在my.cnf里面加入参数

 skip-character-set-client-handshake
 collation_server=utf8_unicode_ci
 character_set_server=utf8

原文引用:http://www.godblessyuan.com/2015/01/18/mysql5-5_mysql5-6_make_install/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容