mysql5.6编译安装详解

1,下载安装包    tar.gz

  mysql下载官网--MySQL Community Server 5.6.26--source code--

    --Generic Linux (Architecture Independent), Compressed TAR Archive(.tar.gz)

  wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.26.tar.gz


2.下载完成后检查文件的MD5,确认下载的是原本,以防被人篡改。

    #md5sum mysql5.6.26.tar.gz


3.安装cmake

  yum -y install cmake


4.检查是否已经安装mysql

    #rpm -qa |grep mysql

  有的话要卸载以前安装的mysql

    #rpm -e --nodeps xxx

    (-ivh 安装rpm包的参数,是以verbose模式安装,可以显示进度条;--nodeps 不考虑依属关系,强制的安装或卸载;--force 强制的)

  删除相关配置文件

    #rm /etc/my.cnf


5.安装编译代码需要的包(bison,gcc-c++,ncurses,libaio)

    yum install -y ncurses-devel.x86_64
    yum install -y libaio.x86_64
    yum install -y bison.x86_64
    yum install -y gcc-c++.x86_64 

  如果没有安装,在编译阶段cmake,则会报相应错误:

    a.-- Could NOT find Curses  (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:85 (MESSAGE):
  Curses library not found.  Please install appropriate package,

    --没有安装ncurses

    b.CMake Error at /usr/share/cmake-2.8/Modules/CMakeCXXInformation.cmake:37 (get_filename_component):

get_filename_component called with incorrect number of arguments
Call Stack (most recent call first):
CMakeLists.txt:3 (PROJECT)


CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
CMake Error: Internal CMake error, TryCompile configure of cmake failed

    --没有安装gcc-c++

    c.安装相应编译包后,需要把之前的CMakeCache.txt文件删除

    #find / -name CMakeCache.txt

    #rm -rf /usr/local/.../CMakeCache.txt


6.创建用户和用户组,(PS:在编译之前需要先创建用户和用户组,不然在编译后会频繁报错误。)

    检查是否创建mysql用户:

    #cat /etc/passwd |grep mysql

    #cat /etc/shadow |grep mysql

    如果没有存在:

    #groupadd mysql -s /sbin/nologin    创建mysql用户组,但不能登录系统

    #useradd -g mysql mysql    创建的mysql用户所属组是mysql用户组

    or

    #groupadd mysql

    #useradd -r -g mysql mysql    -r表示mysql用户是系统用户,不可用于登录系统

    or

    #groupadd mysql

    #useradd mysql -g mysql -M -s /sbin/nologin    

        -g  表示新用户所属用户组

        -M  表示不建立根目录

        -s  定义使用的shell,/sbin/nologin表示不能登录系统


如果没有提前创建mysql用户,报错:

Starting MySQL...The server quit without updating PID file (/data/mysql/mysql.pid). 不能更新pid文件


7.cmake执行编译

    tar zxvf mysql-5.6.26.tar.gz

    cd /../mysql-5.6.26

    time cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR==/data/mysql/mysql.sock -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

    则显示编译成功

参数说明:

    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql       -----安装目录  这是MySQL的默认安装位置
    -DINSTALL_DATADIR=/usr/local/mysql         -----   数据库存放目录
    -DDEFAULT_CHARSET=utf8                      -----   使用utf8字符
    -DDEFAULT_COLLATION=utf8_general_ci           -----    校验字符
    -DEXTRA_CHARSETS=all                           -----    安装所有扩展字符集
    -DENABLED_LOCAL_INFILE=1                        -----    允许从本地导入数据

8.make && make install安装mysql

    #make && make install

    花费时间比较长。


9.配置mysql,创建数据库路径和赋予权限

    #mkdir -p /data/mysql    -p表示递归创建目录

    #chown -R mysql.mysql /data/mysql

    #chmod 755 /data/mysql


    #chown -R mysql.mysql /usr/local/mysql    


10.修改/etc/my.conf配置文件

    cd /usr/local/mysql

    cp support-files/my-default.cnf /etc/my.cnf

    vim /etc/my.cnf        

       [mysqld]  

         datadir = /data/mysql

         socket = /data/mysql/mysql.sock

         pid-file=/data/mysql/mysql.pid

         log-error=/data/mysql/mysql.err

         user=mysql

       [mysql]

          socket = /data/mysql/mysql.sock

       [mysqldump]

           socket = /data/mysql/mysql.sock

       [mysqladmin]

           socket = /data/mysql/mysql.sock


10.初始化数据库

    scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

    (执行的mysql_install_db脚本,对mysql中的data目录进行初始化并建立系统表格。注意mysql服务进程mysqld运行时会访问data目录,所以必须由启动mysqld进程的用户(我们之前指定的mysql用户)执行这个脚本,或者root用户执行,但是root用户执行时必须加上参数--user=mysql。如果mysql的安装目录不是/usr/local/mysql,还必须指定目录参数--basedir=/../,--datadir=/../)

  如果报错:

Installing MySQL system tables.../usr/local/mysql/bin/mysqld: File '/home/data/mysql/binlog/mysql-bin.index' not found (Errcode: 2 - No such file or directory)
2014-06-27 10:47:14 9686 [ERROR] Aborting

2014-06-27 10:47:14 9686 [Note] Binlog end
2014-06-27 10:47:14 9686 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

    解决:#mkdir -p /data/mysql/binlog/

          #chown -R mysql.mysql /data/mysql/binlog

    最后提示:

WARNING: Default config file /etc/my.cnf exists on the system
This file will be read by default by the MySQL server
If you do not want to use this, either remove it, or use the
--defaults-file argument to mysqld_safe when starting the server

    则表示初始化完成。


11.添加开机启动项和开机启动服务systemctl

    cp support-files/mysql.server /etc/init.d/mysqld

    chmod 700 /etc/init.d/mysqld

    echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile    设置环境变量

    source /etc/profile     使新设置的环境变量立即生效


    vim /lib/systemd/system/mysqld.service   

[Unit]  

Description=mysql  

After=network.target  

   

[Service]  

Type=forking  

ExecStart=/etc/init.d/mysqld start  

ExecReload=/etc/init.d/mysqld restart  

ExecStop=/etc/init.d/mysqld  stop  

PrivateTmp=true  

   

[Install]  

WantedBy=multi-user.target

具体参考文档:systemctl系统服务管理,service,chkconfig    

    http://jasonzhu.blog.51cto.com/5594807/1692442


12.mysql服务启动

    #service mysqld start

    or

    #systemctl start msyqld.service



13.检验mysql是否开启成功

    #ps aux |grep mysql

   or

    #nestat -lnp |grep 3306   

    or

    #mysql 

    >show databases;

    设置mysql的root用户密码

    #mysqladmin -uroot password


    如果报错1:

2014-06-24 14:56:54 31726 [Note] Server socket created on IP: '::'.
2014-06-24 14:56:54 31726 [ERROR] Can't start server : Bind on unix socket: Permission denied
2014-06-24 14:56:54 31726 [ERROR] Do you already have another mysqld server running on socket: /usr/local/mysql/mysql.sock ?
2014-06-24 14:56:54 31726 [ERROR] Aborting

    主要原因:

    /usr/local/mysql的目录需要赋予mysql权限

    根据日志文件,检查运行权限,确定是否因为没有权限在/data/mysql/目录中写入mysql.sock文件。

    #chown -R mysql.mysql /data/mysql

    #chown -R mysql.mysql /usr/local/mysql

    如果报错2:

    。。。。

    可能因为存在mysql进程,所以开启服务的时候会报错

    kill [pid]杀死相应进程即可。


linux mysql5.5安装与配置http://zhoualine.iteye.com/blog/1753347(详细配置文档)

mysql多实例配置:http://www.linuxidc.com/Linux/2015-06/119354.htm


你可能感兴趣的:(linux,mysql,报错,详解,源码编译安装)