1、下載MySQL5.6.24源碼包,安裝編譯工具及庫文件html
官網下載地址:http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.24.tar.gzmysql
也可選擇從國內的搜狐鏡像下載:http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.24.tar.gzc++
注:源碼包的文件名通常都是這種格式:mysql-<版本號>.tar.gzsql
安裝編譯工具及所需的庫文件數據庫
# yum -y install autoconf automake curl curl-devel libevent* libtool* autoconf* freetype* libstd* ncurse* bison* libxml* openssl* zlib* # yum -y install gcc gcc-c++
(備註:從MySQL5.6開始,須要用到g++來編譯,所以必須事先提供g++編譯器。而5.5版本能夠用gcc編譯。)bootstrap
同時,刪除系統自帶的mysql性能優化
# yum remove mysql
2、安裝編譯配置工具CMakebash
因爲MySQL的源碼安裝包從5.5版本開始,編譯配置工具換成了CMake,所以須要先安裝好cmake工具:多線程
一、下載cmake源碼包:cmake-2.8.5.tar.gz併發
二、root用戶下解壓:
# cp cmake-2.8.5.tar.gz /tmp # cd /tmp # tar -zxvf cmake-2.8.5.tar.gz # cd cmake-2.8.5
三、root用戶下編譯安裝:
# ./bootstrap # gmake && gmake install
3、安裝boost庫
# wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz # tar zxvf boost_1_59_0.tar.gz # mv boost_1_59_0 /usr/local/boost # chown -R root:root /usr/local/boost
4、建立mysql用戶、用戶組
# groupadd mysql # useradd -g mysql -m -d /home/mysql -s /bin/bash mysql # passwd mysql
5、建立所需的目錄、建立軟連接
# mkdir -p /usr/local/mysql-5.6.24 # mkdir -p /usr/local/mysql-5.6.24/conf # mkdir -p /usr/local/mysql-5.6.24/run # mkdir -p /usr/local/mysql-5.6.24/log # ln -s /usr/local/mysql-5.6.24 /usr/local/mysql
6、 設置用戶操做系統資源的限制
# vi /etc/security/limits.conf
在文件最後添加以下內容:
mysql soft nproc 2047 mysql hard nproc 16384 mysql soft nofile 1024 mysql hard nofile 65536
7、解壓mysql源碼包、配置、編譯安裝
一、解壓:
# tar -zxvf mysql-5.6.24.tar.gz -C /tmp # cd /tmp/mysql-5.6.24
二、配置:
執行cmake命令,生成編譯配置文件(至關於之前的./configure)
第一次執行cmake配置後,有出現以下的報錯:
CMake Warning: Manually-specified variables were not used by the project: WITH_MEMORY_STORAGE_ENGINE WITH_READLINE
5.6.24版本已經不支持上面這2個參數了:
(http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html#option_cmake_with_readline)
備註: MySQL默認支持:MyISAM,MERGE,MEMORY,CSV存儲引擎。
所以,刪除當前目錄下CMakeCache.txt(或者刪除整個目錄並從新解壓mysql源碼包),再次執行不帶這2個參數的cmake命令:
# make clean # rm -f CMakeCache.txt # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.24 \ -DMYSQL_DATADIR=/data/mysql_data \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DMYSQL_TCP_PORT=3306 \ -DMYSQL_USER=mysql \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=/usr/local/boost
這一次配置執行成功。
注意,這個cmake是替代之前的./configure 步驟。若是你須要更多的參數,請參考http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html。
三、編譯、安裝:
# time make -j # time make install # # 或者 # make -j && make install
注:
①make的-j 選項,是利用多線程併發編譯,對於多核CPU的機器來講,能夠提升編譯速度(虛擬機單線程就免了)
②這一步的耗時可能好久,具體與機器配置性能有關,能夠衝一杯咖啡、轉悠一下
至此,mysql已編譯安裝到/usr/local/mysql-5.6.24。
8、準備好配置文件(my.cnf)
MySQL 5.6.8開始,就再也不分發my.cnf等各個級別配置的sample,只提供了support-files/my-default.cnf文件做爲模板,舊的那幾個全都再也不提供。
不過不要緊,我們能夠手動建立一個my.cnf文件,指定具體的參數配置。
# cp /usr/local/mysql/support-files/my-default.cnf /usr/local/mysql-5.6.24/conf/my.cnf
清空my.cnf的原始樣本內容,添加如下內容:
[mysqld_safe] pid-file=/usr/local/mysql-5.6.24/run/mysqld.pid #malloc-lib=/usr/local/mysql-5.6.24/lib/libjemalloc.so [mysql] port=3306 prompt=\\u@\\d \\r:\\m:\\s> default-character-set=utf8 no-auto-rehash [client] port=3306 socket=/usr/local/mysql-5.6.24/run/mysql.sock [mysqld] port=3306 #bind-address=127.0.0.1 basedir=/usr/local/mysql-5.6.24 datadir=/usr/local/mysql-5.6.24/data socket=/usr/local/mysql-5.6.24/run/mysql.sock tmpdir=/tmp lc_messages_dir=/usr/local/mysql-5.6.24/share log-error=/usr/local/mysql-5.6.24/log/alert.log slow_query_log_file=/usr/local/mysql-5.6.24/log/slow.log general_log_file=/usr/local/mysql-5.6.24/log/general.log ############# default settings ################ # time zone default-time-zone = system character-set-server = utf8 default-storage-engine = InnoDB ############# advised configuration by dataguru mysql class (WangHeng - Henry) ################ ##innodb #innodb_data_home_dir=/project/class2/mysql/data #innodb_log_group_home_dir=/project/class2/mysql/data #innodb_data_file_path=ibdata1:2G;ibdata2:16M:autoextend #innodb_buffer_pool_size=10G #innodb_buffer_pool_instances=4 #innodb_log_files_in_group=2 #innodb_log_file_size=1G #innodb_log_buffer_size=200M #innodb_flush_log_at_trx_commit=1 #innodb_additional_mem_pool_size=20M #innodb_max_dirty_pages_pct=60 #innodb_io_capacity=1000 #innodb_thread_concurrency=16 #innodb_read_io_threads=8 #innodb_write_io_threads=8 #innodb_open_files=60000 #innodb_file_format=Barracuda #innodb_file_per_table=1 #innodb_flush_method=O_DIRECT #innodb_change_buffering=inserts #innodb_adaptive_flushing=1 #innodb_old_blocks_time=1000 #innodb_stats_on_metadata=0 #innodb_read_ahead=0 #innodb_use_native_aio=0 #innodb_lock_wait_timeout=5 #innodb_rollback_on_timeout=0 #innodb_purge_threads=1 #innodb_strict_mode=1 #transaction-isolation=READ-COMMITTED # ##myisam #key_buffer=64M #myisam_sort_buffer_size=64M #concurrent_insert=2 #delayed_insert_timeout=300 # ##replication #master-info-file=/project/class2/mysql/log/master.info #relay-log=/project/class2/mysql/log/relaylog #relay_log_info_file=/project/class2/mysql/log/relay-log.info #relay-log-index=/project/class2/mysql/log/mysqld-relay-bin.index #slave_load_tmpdir=/project/class2/mysql/tmp #slave_type_conversions="ALL_NON_LOSSY" #slave_net_timeout=4 #skip-slave-start #sync_master_info=1000 #sync_relay_log_info=1000 # ##binlog #log-bin=/project/class2/mysql/log/mysql-bin #server_id=2552763370 #binlog_cache_size=32K #max_binlog_cache_size=2G #max_binlog_size=500M #binlog-format=ROW #sync_binlog=1000 #log-slave-updates=1 #expire_logs_days=0 # ##server #default-storage-engine=INNODB #character-set-server=gbk #lower_case_table_names=1 #skip-external-locking #open_files_limit=65536 #safe-user-create #local-infile=1 ##sqlmod="STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE" #performance_schema=0 # #log_slow_admin_statements=1 #log_warnings=1 #long_query_time=1 #slow_query_log=1 #general_log=0 # #query_cache_type=0 #query_cache_limit=1M #query_cache_min_res_unit=1K # #table_definition_cache=65536 #table_cache=65536 # #thread_stack=512K #thread_cache_size=256 #read_rnd_buffer_size=128K #sort_buffer_size=256K #join_buffer_size=128K #read_buffer_size=128K # #port=3306 #skip-name-resolve #skip-ssl #max_connections=4500 #max_user_connections=4000 #max_connect_errors=65536 #max_allowed_packet=128M #connect_timeout=8 #net_read_timeout=30 #net_write_timeout=60 #back_log=1024
my.cnf的配置文件的默認讀取順序爲
File Name(上面的優先) | Purpose |
---|---|
/etc/my.cnf |
Global options |
/etc/mysql/my.cnf |
Global options |
|
Global options |
$MYSQL_HOME/my.cnf |
Server-specific options |
defaults-extra-file |
The file specified with --defaults-extra-file= , if any |
~/.my.cnf |
User-specific options |
~/.mylogin.cnf |
Login path options |
個人這個配置比較簡單,聲明一下經常使用的變量,若是你須要對性能優化,那麼你須要細細研讀一下配置文件。能夠參考
9、初始化數據庫
# cd /usr/local/mysql-5.6.24 # rm -rf /usr/local/mysql-5.6.24/data/* #先刪除安裝後自帶的data下的目錄(目錄是空的) # ./scripts/mysql_install_db --datadir=/usr/local/mysql-5.6.24/data --user=mysql Installing MySQL system tables...2016-01-17 22:10:19 0 2016-01-17 22:10:19 0 [Note] ./bin/mysqld (mysqld 5.6.24) starting as process 20205 ... OK Filling help tables...2016-01-17 22:10:25 0 2016-01-17 22:10:25 0 [Note] ./bin/mysqld (mysqld 5.6.24) starting as process 20232 ... OK ...
①在安裝輸出日誌中,看到這2個OK字樣,通常就是初始化成功了
②這裏出現了ERROR報錯'skip-locking',緣由是以前安裝過MySQL,存在/etc/my.cnf文件,並且mysql的環境變量和如今的不同,所以影響當前的mysql。
解決方法:rm -rf /etc/my.cnf
再次執行初始化的命令,執行成功:
# cd /usr/local/mysql-5.6.24 # rm -rf /usr/local/mysql-5.6.24/data/* #先刪除安裝後自帶的data下的目錄(目錄是空的) # ./scripts/mysql_install_db --datadir=/usr/local/mysql-5.6.24/data --user=mysql
③初始化成功後,會自動在/usr/local/mysql-5.6.24目錄下生成my.cnf示例文件,這裏刪除便可(由於已有conf/my.cnf)
10、修改/usr/local/mysql*和/db_data/mysql*目錄的屬主、組
# chown -R mysql:mysql /usr/local/mysql*
11、放開防火牆對3306端口的限制
vi /etc/sysconfig/iptables , 添加一行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
而後重啓iptable服務:
# service iptables restart
12、設置MySQL服務、啓動(可選項,按需)
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld # chmod 755 /etc/rc.d/init.d/mysqld # chkconfig --add mysqld # chkconfig mysqld off # #啓動命令以下 # service mysqld start # 或者: $ /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/conf/my.cnf & (查看alert.log輸出,看到下面的信息,就表示啓動成功了: Version: '5.6.24' socket: '/usr/local/mysql-5.6.24/run/mysql.sock' port: 3306 mysql sample for Goopand )
並修改/etc/init.d/mysqld文件中的basedir和datadir以下:
basedir=/usr/local/mysql-5.6.24 datadir=/usr/local/mysql-5.6.24/data
十3、清除空密碼數據庫用戶,增長外部鏈接用戶
$ cd /usr/local/mysql/bin $ ./mysql -h127.0.0.1 -P3306 -uroot (初始的數據庫root用戶無密碼) mysql> SET PASSWORD = PASSWORD('123456'); (設置root用戶密碼,也可以使用命令行工具:mysqladmin -u root password "new_password") mysql> grant all privileges on *.* to 'root'@'%' identified by 'MyPassword' WITH GRANT OPTION; mysql> flush privileges; mysql> use mysql; mysql> delete from user where password=""; mysql> exit;
說明:
grant <權限1>,<權限2>,...,<權限n> on <數據庫名稱>.<表名稱> to <用戶名>@<用戶地址> identified by '<鏈接口令>';
關閉mysql服務
$ mysqladmin -h127.0.0.1 -P3306 -uroot -p shutdown
十4、配置Path環境變量
①設置全局環境變量
vi /etc/profile #在文件末尾添加 PATH=/usr/local/mysql/bin:$PATH export PATH #保存退出,生效配置 # source /etc/profile
②設置mysql用戶下的環境變量
vi /home/mysql/.bashrc #在文件末尾添加 PATH=/usr/local/mysql/bin:$PATH export PATH #保存退出,生效配置 # source /home/mysql/.bashrc