CentOS 6.7 源碼編譯安裝MySQL5.6.24

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併發

http://www.cmake.org/

二、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
SYSCONFDIR/my.cnf Global options
$MYSQL_HOME/my.cnf Server-specific options
defaults-extra-file The file specified with --defaults-extra-file=path, 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
相關文章
相關標籤/搜索