免編譯的方式安裝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