免编译的方式安装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