zoukankan      html  css  js  c++  java
  • RHEL Server 6.3下MySQL5.5.25a源码安装

    OS:RHEL Server 6.3

    MySQL:mysql-5.5.25a.tar.gz

    相关依赖包:

    ncurses-5.9.tar.gz

    bison-2.5.tar.gz

    安装MySQL

    一、安装依赖包

    (1)ncurses

    [root@test ~]# cd /data1/lnmp/

    [root@test lnmp]# tar -xzf ncurses-5.9.tar.gz

    [root@test lnmp]# cd ncurses-5.9

    [root@test ncurses-5.9]# ./configure

    [root@test ncurses-5.9]# make && make install

    (2)bison

    [root@test lnmp]# tar -xzf bison-2.5.tar.gz

    [root@test lnmp]# cd bison-2.5

    [root@test bison-2.5]# ./configure

    [root@test bison-2.5]# make && make install

    二、安装用于编译 MySQL 的 cmake 工具

    [root@test lnmp]# tar -xzf cmake-2.8.8.tar.gz

    [root@test lnmp]# cd cmake-2.8.8

    [root@test cmake-2.8.8]#./configure

    [root@test cmake-2.8.8]#make && make install

    三、源码安装 MySQL

    (1)建立运行MySQL的用户和组

    [root@test ~]# groupadd mysql

    [root@test ~]# useradd -M -g mysql -s /sbin/nologin mysql

    (2)建立相关目录

    [root@test ~]# mkdir /usr/local/mysql

    [root@test ~]# mkdir /var/lock/mysql

    [root@test ~]# mkdir /var/run/mysql

    [root@test ~]# mkdir /var/log/mysql

    [root@test ~]# mkdir /data1/mysql_db

    [root@test ~]# chown -R mysql:mysql /usr/local/mysql/

    [root@test ~]# chown mysql:mysql /var/run/mysql/

    [root@test ~]# chown mysql:mysql /var/lock/mysql/

    [root@test ~]# chown mysql:mysql /var/log/mysql/

    [root@test ~]# chown mysql:mysql /data1/mysql_db/

    ------------------------------------------------------------------------------------------

    注意:

    之所以要创建/var/lock/mysql/var/run/mysql目录,这是因为mysql server是用mysql这个用户启动的。/var/lock//var/run/这两个目录只有root才有写的权限,所以mysql这个用户不能在其中建立mysql.lockmysql.pid文件。所以要在/var/lock//var/run/这两个目录分别再建立一个目录,例如:mysql。并把这个目录所有者和群组改为mysql这具用户和群组。此种做法也是为了便于管理,例如把日志存放在/var/log/mysql/,日志只会在这一个目录下轮转,便于管理#chown mysql:mysql /var/run/mysql/ /var/lock/mysql/ /var/log/mysql/

    错误:

    如果数据库 /data1/mysql_db/ 目录权限设置不正确,在启动 mysql 时可能会出现下面的错误。

    [root@test ~]# tail /var/log/mysql.log

    120713 17:15:21 mysqld_safe Starting mysqld daemon with databases from /data1/mysql_db

     /usr/local/mysql/bin/mysqld: File './mysql-bin.index' not found (Errcode: 13)

    120713 17:15:21 [ERROR] Aborting

     

    120713 17:15:21 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

     

    120713 17:15:21 mysqld_safe mysqld from pid file /var/run/mysql/mysql.pid ended

    [root@test ~]#
     
    解决方法:
    这里是用mysql这个用户启动数据库的。所以要把建立的数据库目录 /data1/mysql_db/ 的所有者和群组更改为mysql。
     
    [root@test ~]#chown -R mysql:mysql /data1/mysql_db/
     
    这一步最好在初始化完数据库时再做一下。初始化完成后,可以先检查这个目录下的新建立的文件和目录的权限是否正确,如果正确则不用再做这一步了。
     
    为了安全可以指定用户 mysql 初始化数据库:
    #./mysql_install_db --user=mysql 
    --defaults-file=/etc/my.cnf
    --basedir=/usr/local/mysql/
    --datadir=/data1/mysql_db
    ----------------------------------------------------------------------------------------

    (3)源码安装 MySQL

    [root@test ~]# cd /data1/lnmp/

    [root@test lnmp]# tar -xzf mysql-5.5.25a.tar.gz

    [root@test lnmp]# cd mysql-5.5.25a

    [root@test mysql-5.5.25a]cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
     
    -DSYSCONFDIR=/etc
     
    -DINSTALL_MANDIR=/usr/share/man
     

    -DMYSQL_DATADIR=/data1/mysql_db 

     

    -DWITH_READLINE=ON

    -DWITH_SSL=system 

    -DWITH_DEBUG=0 

    -DWITH_PARTITION_STORAGE_ENGINE=1 

    -DWITH_INNOBASE_STORAGE_ENGINE=1 

    -DWITH_ARCHIVE_STORAGE_ENGINE=1

    -DWITH_FEDERATED_STORAGE_ENGINE=1  

    -DWITH_BLACKHOLE_STORAGE_ENGINE=1

    -DINSTALL_LAYOUT=STANDALONE 

    -DENABLED_LOCAL_INFILE=1 

    -DENABLED_PROFILING=1

    -DMYSQL_MAINTAINER_MODE=0

    -DWITH_EMBEDDED_SERVER=1

    -DMYSQL_TCP_PORT=3306 

    -DMYSQL_USER=mysql

    [root@test mysql-5.5.25a]#make

    [root@test mysql-5.5.25a]#make install

    ------------------------------------------------------------------------------------------

    [root@test mysql-5.5.25a]Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)

    CMake Error at cmake/readline.cmake:83 (MESSAGE):

      Curses library not found.  Please install appropriate package,

     

          remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on RedHat and derivates it is ncurses-devel.

    Call Stack (most recent call first):

      cmake/readline.cmake:127 (FIND_CURSES)

      cmake/readline.cmake:217 (MYSQL_USE_BUNDLED_LIBEDIT)

      CMakeLists.txt:268 (MYSQL_CHECK_READLINE)

     

    -- Configuring incomplete, errors occurred!

    错误原因:

    这是因为没有安装curses library的原因,如果是Debian/Ubuntu平台则要安装libncurses5-dev,RHEL平台安装ncurses-devel
     
    解决方法:
    [root@test mysql-5.5.25a]# yum install ncurses-devel #或源码安装
    [root@test mysql-5.5.25a]# rm -rf CMakeCache.txt    #删除CMakeCache.txt文件
    [root@test mysql-5.5.25a]# cmake .  #再重新编译,即可!
    ------------------------------------------------------------------------------------------

    (4)建立 MySQL 配置文件

    [root@test mysql-5.5.25a]# cp support-files/my-huge.cnf /etc/my.cnf

    [root@test mysql-5.5.25a]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
     
    [root@test mysql-5.5.25a]# chmod 755 /etc/rc.d/init.d/mysqld
     
    [root@test mysql-5.5.25a]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /ect/profile
    [root@test mysql-5.5.25a]# source /etc/profile
     
    ------------------------------------------------------------------------------------------

    注意:

    mysql-5.5.25a/support-files下共有5my.cnf配置文件。

    ★ my-small.cnf适用于小型数据库,该配置文件专为物理内存小于64MB的服务器而设计。

    ★ my-medium.cnf适用于物理内存在32MB64MB之间的专用于运行MySQL服务器,或物理内存在128MB以上。

    ★ my-large.cnf适用于物理内存在512MB以上的专用于运行MySQL数据库的服务器。

    ★ my-huge.cnf适用于物理内存在1GB2GB之间的专用于运行MySQL数据库服务器。

    ★ my-innodb-heavy-4G.cnf适用于服务器物理内存在4GB以上,且需要运行复杂查询的MySQL数据库。

    ------------------------------------------------------------------------------------------

    (5)修改/etc/rc.d/init.d/mysqld 脚本文件

    根据 cmake 时指定的配置参数和 my.cnf 配置文件中的参数修改 mysqld 这个脚本中的变量;my.cnf 配置文件中的参数优先于 cmake 时指定的参数。如果 my.cnf 配置文件没有设置对应的参数,则数据库运行时会以 cmake 时指定的参数为准。my.cnf 中参数优先级高于 cmake 时的配置参数。

    [root@test ~]# vim /etc/rc.d/init.d/mysqld

    basedir=/usr/local/mysql

    datadir=/data1/mysql_db

    lockdir='/var/lock/mysql'

    lock_file_path="$lockdir/mysql.lock"

    mysqld_pid_file_path = /var/run/mysql/mysql.pid
     
     
    (6)修改 /etc/my.cnf 配置文件
    根据 cmake 时的配置修改 my.cnf 文件的部分参数。如果 my.cnf 配置文件没有设置对应的参数,则数据库运行时会以 cmake 时指定的参数为准。my.cnf 中参数优先级高于 cmake 时的配置参数。
     
    [root@test ~]# vim  /etc/my.cnf
     
    # The following options will be passed to all MySQL clients
    [client]
    #password       = your_password
    port            = 3306
    socket          = /tmp/mysql.sock
     
    # The MySQL server
    [mysqld]
    user            = mysql
    port            = 3306
    socket          = /tmp/mysql.sock
    basedir                  = /usr/local/mysql
    datadir         = /data1/mysql_db
    pid-file        = /var/run/mysql/mysql.pid
    log-error       = /var/log/mysql/mysql.log
    character-set-server = utf8
  • 相关阅读:
    模拟赛总结
    2018.04.06学习总结
    2018.04.06学习总结
    Java实现 LeetCode 672 灯泡开关 Ⅱ(数学思路问题)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
  • 原文地址:https://www.cnblogs.com/furenjian/p/4850899.html
Copyright © 2011-2022 走看看