zoukankan      html  css  js  c++  java
  • CentOS-6.4-minimal版中源代码安装MySQL-5.5.38

    完整版见https://jadyer.github.io/2014/09/29/centos-install-mysql/




    /**
     * CentOS-6.4-minimal版中源代码安装MySQL-5.5.38
     * ----------------------------------------------------------------------------------------------------------------------
     * 三种安装方式
     * 1)源代码安装
     * 2)二进制包安装
     * 3)rpm或yum安装
     * 本文演示的是源代码安装,而且,从mysql-5.5開始,源代码安装要通过cmake安装,不能再像曾经使用configure安装了
     * 我们在mysql-5.5.38.tar.gz的根文件夹中,会看到一个名为"BUILD-CMAKE"的文件,打开能够看到以下这句话
     * WHAT YOU NEED : CMake version 2.6 or later installed on your system.
     * ----------------------------------------------------------------------------------------------------------------------
     * 安装CMake(cross platform make)
     * cmake的特性是独立于源代码编译,编译工作能够在另外一个文件夹中而非源代码文件夹中进行,优点是能够保证源代码文件夹不受不论什么一次编译的影响
     * cmake安装方法详见官方文档http://www.cmake.org/install/,我们到http://www.cmake.org/download/下载cmake-3.0.2.tar.gz
     * [root@CentOS64 software]# cmake -version                  #我们会发现没有输出,说明本机并未安装cmake
     * [root@CentOS64 software]# yum list cmake --showduplicates #查看yum可安装的软件包版本号,会看到仅仅能安装cmake-2.6.4-5.el6版本号,故舍弃
     * [root@CentOS64 software]# yum -y install gcc gcc-c++      #安装必要的编译环境
     * [root@CentOS64 software]# yum -y install autoconf libtool #安装必要的编译环境
     * [root@CentOS64 software]# yum -y install ncurses-devel    #安装必要的编译环境(这是配置MySQL环境变量时要用的库,这里一起安装了)
     * [root@CentOS64 software]# tar zxvf cmake-3.0.2.tar.gz     #解压cmake-3.0.2源代码
     * [root@CentOS64 software]# cd cmake-3.0.2                  #进入cmake-3.0.2源代码文件夹
     * [root@CentOS64 cmake-3.0.2]# ./bootstrap                  #成功时,会提示CMake has bootstrapped.  Now run gmake.
     * [root@CentOS64 cmake-3.0.2]# gmake                        #运行编译
     * [root@CentOS64 cmake-3.0.2]# gmake install                #运行安装
     * [root@CentOS64 cmake-3.0.2]# cd ~                         #退出cmake-3.0.2源代码文件夹
     * [root@CentOS64 ~]# rm -rf /app/software/cmake-3.2.0*      #删除cmake-3.0.2源代码
     * [root@CentOS64 ~]# cmake -version                         #验证cmake-3.0.2安装结果
     * ----------------------------------------------------------------------------------------------------------------------
     * @create Sep 28, 2014 5:47:18 PM
     * @author 玄玉<http://blog.csdn.net/jadyer>
     */

    /**
     * ----------------------------------------------------------------------------------------------------------------------
     * 安装MySQL
     * [root@CentOS64 ~]# groupadd -r mysql
     * [root@CentOS64 ~]# useradd -r -s /sbin/nologin -g mysql mysql
     * [root@CentOS64 ~]# mkdir -pv /app/mysql
     * [root@CentOS64 ~]# mkdir -pv /app/mysql_data
     * [root@CentOS64 ~]# chown -R mysql.mysql /app/mysql_data
     * [root@CentOS64 ~]# tar zxvf /app/software/mysql-5.5.38.tar.gz
     * [root@CentOS64 ~]# cd mysql-5.5.38/
     * [root@CentOS64 mysql-5.5.38]# cmake . -DCMAKE_INSTALL_PREFIX=/app/mysql -DMYSQL_DATADIR=/app/mysql_data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_ZLIB=system -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
     * [root@CentOS64 mysql-5.5.38]# make
     * [root@CentOS64 mysql-5.5.38]# make install
     * ----------------------------------------------------------------------------------------------------------------------
     * 配置MySQL
     * [root@CentOS64 ~]# cd /app/mysql/support-files/
     * [root@CentOS64 support-files]# cp my-large.cnf /etc/my.conf       #拷贝配置文件
     * [root@CentOS64 support-files]# cp mysql.server /etc/init.d/mysqld #拷贝启动脚本
     * [root@CentOS64 support-files]# chmod -x /etc/init.d/mysqld        #赋予可运行权限
     * [root@CentOS64 support-files]# chkconfig --add mysqld             #加入系统服务
     * [root@CentOS64 support-files]# chkconfig mysqld on                #开机启动
     * [root@CentOS64 support-files]# vi /etc/profile.d/mysql.sh         #手动创建,加入内容为[export PATH=$PATH:/app/mysql/bin]
     * [root@CentOS64 support-files]# source /etc/profile.d/mysql.sh     #运行一遍
     * [root@CentOS64 support-files]# echo $PATH                         #查看结果
     * [root@CentOS64 support-files]# cd /app/mysql                      #进入MySQL主文件夹
     * [root@CentOS64 mysql]# bin/mysql_secure_installation              #会提示设置rootpassword,是否移除匿名用户,是否禁止root远程登录等等
     * ----------------------------------------------------------------------------------------------------------------------
     * 改动配置文件/etc/my.cnf
     * 在[mysqld]以下添加或改动以下属性
     * user            = mysql
     * basedir         = /app/mysql
     * datadir         = /app/mysql_data
     * pid-file        = /app/mysql_data/mysqld.pid
     * ft_min_word_len = 4
     * max_allowed_packet = 32M
     * character-set-server = urf8
     * skip-name-resolve
     * ----------------------------------------------------------------------------------------------------------------------
     * 初始化MySQL
     * [root@CentOS64 ~]# /app/mysql/scripts/mysql_install_db --basedir=/app/mysql --datadir=/app/mysql_data --user=mysql
     * ----------------------------------------------------------------------------------------------------------------------
     * 启动MySQL
     * [root@CentOS64 ~]# service mysqld start
     * [root@CentOS64 ~]# netstat -tlanop | grep :3306
     * [root@CentOS64 ~]# mysql -uroot -phongyu
     * ----------------------------------------------------------------------------------------------------------------------
     * @create Sep 29, 2014 11:04:27 AM
     * @author 玄玉<http://blog.csdn.net/jadyer>
     */

    /**
     * ----------------------------------------------------------------------------------------------------------------------
     * 注意事项
     * 1)安装必要的编译环境时,也能够使用[um -y groupinstall "Development tools"]命令,但这会安装大约101个库,太粗暴,不建议
     * 2)useradd -s /sbin/nologin
     *   该命令用于设置加入的用户默认bash为nologin,即不同意此用户通过shell登录系统
     * 3)/app/mysql/     文件夹为MySQL数据库主程序文件夹
     *   /app/mysql_data/文件夹为MySQL数据文件文件夹
     * 4)假设在cmake配置环境的过程中出错,比方提示ncurses-devel not found,当yum install后,想又一次配置环境时,要先清除旧的对象文件和缓存信息
     *   [root@CentOS64 mysql-5.5.38]# make clean
     *   [root@CentOS64 mysql-5.5.38]# rm -f CMakeCache.txt
     *   [root@CentOS64 mysql-5.5.38]# rm -rf /etc/my.cnf
     * 5)初始化MySQL时,要跟上--basedir和--datadir參数
     *   否则会因为相对路径的关系,而报告FATAL ERROR: Could not find ./bin/my_print_defaults
     * 6)启动MySQL时提示[env: /etc/init.d/mysqld: 权限不够]
     *   此时运行[chmod -x /etc/init.d/mysqld]是不行的,须要运行[chmod a+wrx /etc/init.d/mysqld]
     *   然后运行[service mysqld start]就可以启动,启动成功时会看到[Starting MySQL.... SUCCESS!]
     *   注意此操作全程为root用户
     * 7)安装并启动完MySQL后,默认不支持用户通过非本机的client连接到MySQL,解决的方法例如以下
     *   [root@CentOS64 ~]# mysql -uroot -phongyu
     *   mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'hongyu22' WITH GRANT OPTION;
     *   mysql> FLUSH PRIVILEGES;
     *   mysql> exit
     *   如此,全部用户就都能够连接到MySQL了,只是注意连接时使用的password是hongyu22,而非hongyu
     *   当中,['root'@'%']里面的root表示username,%代表随意主机或IP地址,能够依据实际须要改动username或主机IP
     *   而且,这里授权是授权全部权限,当然也能够指定部分权限,详见官方文档http://dev.mysql.com/doc/refman/5.5/en/grant.html
     * 8)通过以上操作,若client仍无法连接MySQL,可尝试下面办法
     *   改动/etc/sysconfig/iptables文件,添加一行[-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT]
     *   接着再运行[service iptables restart]命令重新启动防火墙就可以,不须要重新启动Linux
     *   具体说明见http://blog.csdn.net/jadyer/article/details/11324237
     * ----------------------------------------------------------------------------------------------------------------------
     * 编译选项(其他參数见官方文档)
     * -DCMAKE_INSTALL_PREFIX=/app/mysql           #数据库安装路径(默觉得/usr/local/mysql),该參数可在启动服务时用--basedir參数指定
     * -DINSTALL_PLUGINDIR=/usr/local/mysql/plugin #插件文件及配置路径
     * -DMYSQL_DATADIR=/app/mysql_data             #数据文件路径
     * -DSYSCONFDIR=/etc                           #配置文件路径
     * -DWITH_INNOBASE_STORAGE_ENGINE=1            #安装InnoDB存储引擎
     * -DWITH_MYISAM_STORAGE_ENGINE=1              #安装MyISAM存储引擎
     * -DWITH_ARCHIVE_STORAGE_ENGINE=1             #安装archive存储引擎
     * -DWITH_BLACKHOLE_STORAGE_ENGINE=1           #安装blackhole存储引擎
     * -DWITHOUT_BLACKHOLE_STORAGE_ENGINE=1        #取消安装blackhole存储引擎
     * -DWITH_READLINE=1                           #支持批量导入mysql数据
     * -DWITH_SSL=yes                              #支持SSL
     * -DWITH_SSL=system                           #mysql支持ssl会话,实现基于ssl的数据复制
     * -DWITH_ZLIB=system                          #压缩库
     * -DWITH_LIBWRAP=0                            #能否够基于WRAP实现訪问控制
     * -DMYSQL_USER=mysql                          #MySQLusername
     * -DMYSQL_TCP_PORT=3306                       #MySQL监听端口
     * -DMYSQL_UNIX_ADDR=/tmp/mysql.sock           #指定socket文件存放位置
     * -DENABLED_LOCAL_INFILE=1                    #是否启用LOCAL_INFILE功能,即同意从本地导入数据
     * -DEXTRA_CHARSETS=all                        #安装全部扩展字符集
     * -DDEFAULT_CHARSET=utf8                      #默认编码机制
     * -DDEFAULT_COLLATION=utf8_general_ci         #默认语言的排序规则(校验字符)
     * -DWITH_DEBUG=0                              #DEBUG功能设置
     * -DENABLE_PROFILING=1                        #是否启用性能分析功能
     * ----------------------------------------------------------------------------------------------------------------------
     * @create Sep 29, 2014 11:05:06 AM
     * @author 玄玉<http://blog.csdn.net/jadyer>
     */
  • 相关阅读:
    poj1047
    poj1129
    poj1050
    C#中break、continue的用法
    关于一个不大常用的SQL数据类型-UNIQUEIDENTIFIER
    关于net2.0里面新出现的类backgroundworker的应用
    深入讲解SQL Union和Union All的使用方法
    让你一次性搞定堆、栈、值类型、引用类型 (转载)
    EXEC与sp_executesql的区别及应用(转)
    几种常用排序算法总结(转载)
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6936555.html
Copyright © 2011-2022 走看看