CentOS下编译安装MySQL5.6.16备忘

下编译MySQL5.6.16版本,直接编译MySQL源代码会出现一些问题,因此在这里备忘一下编译方法及修改事项。的编译过程如下:

$ sed -i "/ADD_SUBDIRECTORY(sql\/share)/d" CMakeLists.txt &&
$ sed -i "s/ADD_SUBDIRECTORY(libmysql)/&\\nADD_SUBDIRECTORY(sql\/share)/" CMakeLists.txt &&
$ sed -i "s@data/test@\${INSTALL_MYSQLSHAREDIR}@g" sql/CMakeLists.txt &&
$ sed -i "s@data/mysql@\${INSTALL_MYSQLTESTDIR}@g" sql/CMakeLists.txt &&
$ sed -i "s/srv_buf_size/srv_sort_buf_size/" storage/innobase/row/row0log.cc &&
$ mkdir build &&
$ cd build &&
$ cmake -DCMAKE_BUILD_TYPE=Release                    \
         -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.16                   \
         -DINSTALL_MYSQLDATADIR=/srv/mysql             \
         -DINSTALL_SQLBENCHDIR=share/mysql/bench       \
         -DINSTALL_SUPPORTFILESDIR=share/mysql         \
         -DMYSQL_DATADIR=/srv/mysql                    \
         -DSYSCONFDIR=/etc/mysql                       \
         -DWITH_PERFSCHEMA_STORAGE_ENGINE=OFF          \
         -DWITH_EXTRA_CHARSETS=all                 \
         -DWITH_LIBEVENT=system                        \
         -DWITH_SSL=system                             \
         .. &&
make

TIPS:如果你对参数的设置不是很清楚,可以参看MySQL的官方文档: MySQL Source-Configuration Options

要是你能顺利完成编译,那恭喜。

Mitchell前后做过的修改和操作如下:

  1. 修改: ./cmake/ssl.cmake 237:55
    在"${WITH_SSL_DOC}的错误,修改成" ${WITH_SSL_DOC}
    注意:双引号后面需要加个空格
  2. 修改./CMakeLists.txt
    CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
    # Avoid warnings in higher versions
    if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" GREATER 2.6)
       CMAKE_POLICY(VERSION 2.8)
       # Added by MitchellChu to dispose CMP0022 CMake Waning.
       # 这里检验cmake版本是否大于2.8.11,如果大于,把CMP002策略设置为OLD
       IF("${CMAKE_VERSION}" VERSION_GREATER "2.8.11")
          CMAKE_POLICY(SET CMP0022 OLD)
       ENDIF()
    endif()
  3. 安装完毕添加my.cnf
    # install -v -dm 755 /etc/mysql &&
    cat > /etc/mysql/my.cnf <<"EOF"
    ###这里是你的cnf配置文件内容
    EOF
  4. 初始化Mysql实例数据
    # /usr/local/mysql5.6.16/scripts/mysql_install_db --basedir=/usr/local/mysql5.6.16 --datadir=/srv/mysql/data --user=mysql&&
    chown -R mysql:srvuser /srv/mysql/data
  5. MYSQL_UNIX_ADDR为默认的/tmp/mysqld.sock,还要配置下运行时的mysqld.sock和mysql.sock
    # install -v -o mysql -g srvuser -d /var/run/mysqld &&
    # install -v -o mysql -g srvuser -d /var/lib/mysql
    
    ## 网上说法是要touch pid文件
    
    # touch /var/run/mysqld/mysqld.pid
    ## 其实不必,如果my.cnf设置pid-file则需要对应的路径下有权限,如果没有设置,默认在datadir下,pid文件名为:hostname.pid, (hostname为运行系统的名称)
    ## 建立mysql client的socket,编译默认在/tmp/mysql.sock,而系统mysqld默认是在/var/run/mysqld/下面建立mysqld.sock的(可在my.cnf中配置)
    
    # ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
    ## 如果是在my.cnf中配置了client 和mysqld的 socket,直接指向同一个mysqld.sock的话(比如指向/tmp/mysqld.sock),则可以不必在建立连接。
  6. 配置好了之后,可以测试启动,使用mysqld_safe启动.
    # ./mysqld_safe --user=mysql >/dev/null 2>&1 &
  7. 如果正常,则可以使用 mysqladmin设置一个本地密码:
    # ./mysqladmin -u root password <your-password-here>
  8. 而后,关闭mysql,进行后继配置
  9. 配置服务,其实很简单,找到文件mysql.server,并拷贝到/etc/init.d/下即可
    # cp /usr/local/mysql5.6.16/share/mysql/mysql.server /etc/init.d/mysql.server
    ## 如果你对启动项有修改,可以在这里面修改,比如我的datadir编译和初始化的时候不同,则可以在此修改datadir的值
    ## 完成这步之后,你可以使用:
    ## 启动mysql
    # service mysql.server start 
    ## 停止mysql
    # service mysql.server stop
    ## 重启mysql
    # service mysql.server restart
  10. 设置启动运行和关机自动关闭mysql
    ## 这个仅需要建立两个连接即可,开机运行:
    # ln -s /etc/init.d/mysql.server /etc/rc3.d/S99mysql
    # ln -s /etc/init.d/mysql.server /etc/rc0.d/K01mysql

 完毕之后,启动MySQL服务,此时已经完成MySQL的编译安装的所有工作,接下来要做的是,使用root登录MySQL创建你需要的用户和库(表)。

注意:

$,#是终端提示符,##是注释

本文仅是Mitchell本人在CentOS()下编译安装MySQL5.6.16时的个人备忘,参考是可以,权威是没有的。

Monday, April 28, 2014 | Unix & Linux

文章评论

No comments posted yet.

发表评论

Please add 5 and 8 and type the answer here:

关于博主

  一枚成分复杂的网络IT分子,属于互联网行业分类中的杂牌军。