CentOS 6.7 源码编译安装MySQL5.6.24
博客专区 > Goopand 的博客 > 博客详情
CentOS 6.7 源码编译安装MySQL5.6.24
Goopand 发表于3年前
CentOS 6.7 源码编译安装MySQL5.6.24
  • 发表于 3年前
  • 阅读 59
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

一、下载MySQL5.6.24源码包,安装编译工具及库文件

官网下载地址:http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.24.tar.gz

也可选择从国内的搜狐镜像下载:http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.24.tar.gz

注:源码包的文件名一般都是这种格式:mysql-<版本号>.tar.gz

安装编译工具及所需的库文件

# 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编译。)

 

同时,删除系统自带的mysql

# yum remove mysql

 

 

二、安装编译配置工具CMake

由于MySQL的源码安装包从5.5版本开始,编译配置工具换成了CMake,因此需要先安装好cmake工具:

1、下载cmake源码包:cmake-2.8.5.tar.gz

http://www.cmake.org/

2、root用户下解压:

# cp cmake-2.8.5.tar.gz /tmp
# cd /tmp
# tar -zxvf cmake-2.8.5.tar.gz
# cd cmake-2.8.5

3、root用户下编译安装:

# ./bootstrap
# gmake && gmake install

 

三、安装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

 

四、创建mysql用户、用户组

# groupadd mysql
# useradd -g mysql -m -d /home/mysql -s /bin/bash mysql
# passwd mysql

 

 

五、创建所需的目录、创建软链接

# 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

 

 

六、 设置用户操作系统资源的限制

# vi /etc/security/limits.conf

在文件最后添加如下内容:

mysql soft nproc  2047
mysql hard nproc  16384
mysql soft nofile 1024
mysql hard nofile 65536

 

 

七、解压mysql源码包、配置、编译安装

1、解压:

# tar -zxvf mysql-5.6.24.tar.gz -C /tmp
# cd /tmp/mysql-5.6.24

2、配置:

执行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

3、编译、安装:

# time make -j
# time make install
# # 或者
# make -j && make install

注:

①make的-j 选项,是利用多线程并发编译,对于多核CPU的机器来说,可以提高编译速度(虚拟机单线程就免了)

②这一步的耗时可能很久,具体与机器配置性能有关,可以冲一杯咖啡、转悠一下

至此,mysql已编译安装到/usr/local/mysql-5.6.24。

 

 

八、准备好配置文件(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

 

我的这个配置比较简单,声明一下常用的变量,如果你需要对性能优化,那么你需要细细研读一下配置文件。可以参考

 

 

九、初始化数据库

# 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)

 

十、修改/usr/local/mysql*和/db_data/mysql*目录的属主、组

# chown -R mysql:mysql /usr/local/mysql*

 

十一、放开防火墙对3306端口的限制

vi /etc/sysconfig/iptables , 添加一行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

然后重启iptable服务:

# service iptables restart

 

十二、设置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

 

 

十三、清除空密码数据库用户,增加外部连接用户

$ 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

 

十四、配置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

 

共有 人打赏支持
粉丝 7
博文 176
码字总数 170643
×
Goopand
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: