/** * 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 #会提示设置root密码,是否移除匿名用户,是否禁止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后,默认不支持用户通过非本机的客户端连接到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了,不过注意连接时使用的密码是hongyu22,而非hongyu * 其中,['root'@'%']里面的root表示用户名,%代表任意主机或IP地址,可以根据实际需要修改用户名或主机IP * 并且,这里授权是授权所有权限,当然也可以指定部分权限,详见官方文档http://dev.mysql.com/doc/refman/5.5/en/grant.html * 8)通过以上操作,若客户端仍无法连接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 #MySQL用户名 * -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> */
CentOS-6.4-minimal版中源码安装MySQL-5.5.38
原文地址:http://blog.csdn.net/jadyer/article/details/39668111