免编译的方式安装mysql-5.6.14


   今天领导要求使用免编译的方式安装生产环境的mysql,所以才有了下文.  里面涉及的目录已经处理,大家根据需要自己来改吧!


1  下载mysql免编译包:

wget http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.14-linux-glibc2.5-x86_64.tar.gz


2  设置mysql目录:

tar -zxvf mysql-5.6.14-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.14-linux-glibc2.5-x86_64 /usr/local/mysql
groupadd mysql
useradd -g mysql -M mysql
mkdir -p /work/mysql/data
chown -R mysql.mysql /work/mysql/data


3  初始化MySQL数据库:

#提示:运行下面的命令初始化安装mysql之前确认系统没有/etc/my.cnf
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/work/mysql/data --user=mysql


4   添加mysqld 成为系统服务并设置自启动:

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on


5  启动mysql:

/etc/init.d/mysqld start


6  设置密码:

/usr/local/mysql/bin/mysqladmin -u root password '你的密码'


7  关于my.cnf:

mysqld-5.5以上版本的my.cnf这个文件 在执行初始化的时候,会自动安装到/usr/local/mysql/my.cnf下。  并且主要修改里面的选项配置


8  故障:

Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist


解决办法:

这个问题是需要重新初始化mysql数据库
mysql_install_db --basedir=/usr/local/mysql --datadir=/work/mysql/data --user=mysql


9  关于我的my.cnf:

/usr/local/mysql/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
datadir = /work/mysql/data
port = 3306
# server_id = .....
socket = /tmp/mysql.sock
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES



ps : 根据上面的内容可以自己做成一键安装脚本。这样就不必像以前那样漫长的等待了.



------------------华丽的分割线------------------------

下面这个脚本是我在实际生产环境里面使用的,跟上面的内容多少有点出入。大家自己修改吧



#!/bin/bash
#Date:2014/01/07
#BY:renzhenxing  qq:57674891
# 免编译安装mysql-5.6.14
#wget mysql-5.6.14 not install pack:
yum install -y gzip
cd /usr/local/src/
if [ -f mysql-5.6.14-linux-glibc2.5-x86_64.tar.gz ];then
   echo "mysql-5.6.14 pack is exist!"
else
   echo "mysql pack is not exist,............now  download..................."
   wget http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.14-linux-glibc2.5-x86_64.tar.gz
fi
tar -zxf mysql-5.6.14-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.14-linux-glibc2.5-x86_64 /usr/local/mysql
groupadd mysql
useradd -g mysql -M mysql
mkdir -p /data
chown -R mysql.mysql /data
[ -f /etc/my.cnf ] &&  mv /etc/my.cnf /etc/my.cnf_old
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data --user=mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
ln -s /usr/local/mysql/my.cnf /etc/my.cnf
cat>/etc/my.cnf<<EOF
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
datadir = /data
port = 3306
# server_id = .....
socket = /tmp/mysql.sock
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
EOF
/etc/init.d/mysqld start
echo " "
ps -ef | grep -v "grep mysql" |grep mysql
if [ $? -eq 0 ];then
   echo "mysql is install successful"
   exit 0
else
   echo "mysql is install failure!"
   exit 1
fi