CentOS 6.4 编译安装 MySQL 5.7

参考博客:http://blog.csdn.net/xyang81/article/details/51792144

  http://lbaztyy.blog.163.com/blog/static/266870021201691910548887

 

安装目录为:/opt/mysql

数据文件目录:/opt/mysql/data

1)首先打开终端,安装一系列 依赖文件

sudo yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel

  下载Boost1.59.0源代码,并解压到/usr/local/目录下: 

wget -c https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz --no-check-certificate
tar -zxvf boost_1_59_0.tar.gz -C /usr/local/

  如果你的进行编译操作的服务器主机的内存低于2G,建议请先添加2G的交换空间,防止编译过程中出现内存不足的情况

  执行以下命令添加2G交换空间

dd if=/dev/zero of=/swapfile bs=1k count=2048000   #获取要增加的2G的SWAP文件块
mkswap /swapfile    #创建SWAP文件
swapon /swapfile     #激活SWAP文件
swapon -s      #查看SWAP信息是否正确
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab     #添加到fstab文件中让系统引导时自动启动

  如果以后不需要使用交换空间,可以执行以下命令删除

swapoff /swapfile
rm -fr /swapfile

 

2)从github上下载mysql源代码,若未安装git,请执行  sudo yum install git -y 安装git

  下载源代码:

git clone https://github.com/mysql/mysql-server.git
git branch -r

  可以看到,当前版本为5.7,如果想要获取其他版本,例如5.6,可以执行  git checkout 5.6

 

3)添加mysql账户

groupadd mysql #添加mysql用户组
useradd -r -g mysql -s /bin/false mysql #添加mysql用户
mkdir /opt/mysql #创建安装目录
mkdir /opt/mysql/data
mkdir /opt/mysql/logs
mkdir /opt/mysql/temp

4)配置编译参数

cmake . -DCMAKE_INSTALL_PREFIX=/opt/mysql -DMYSQL_DATADIR=/opt/mysql/data -DWITH_BOOST=/usr/local/boost_1_59_0 -DSYSCONFDIR=/etc -DEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all
  • -DCMAKE_INSTALL_PREFIX:安装路径
  • -DMYSQL_DATADIR:数据存放目录
  • -DWITH_BOOST:boost源码路径
  • -DSYSCONFDIR:my.cnf配置文件目录
  • -DEFAULT_CHARSET:数据库默认字符编码
  • -DDEFAULT_COLLATION:默认排序规则
  • -DENABLED_LOCAL_INFILE:允许从本文件导入数据
  • -DEXTRA_CHARSETS:安装所有字符集

5)编译并安装

make -j `grep processor /proc/cpuinfo | wc -l`
make install

  注:-j参数表示根据CPU核数指定编译时的线程数,可以加快编译速度。默认为1个线程编译,经测试单核CPU,1G的内存,编译完需要将近1个小时。

6)初始化数据库系统

cd /opt/mysql #切换到mysql安装根目录

  先修改mysql配置文件 /etc/my.cnf(在该目录未找到,请执行 cp support-files/my-default.cnf /etc/my.cnf )

vim /etc/my.cnf

  替换文件内容为一下内容

[client]
port=3306
socket=/opt/mysql/mysql.sock
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

skip-external-locking
skip-name-resolve

user=mysql
port=3306
basedir=/opt/mysql
datadir=/opt/mysql/data
tmpdir=/opt/mysql/temp
# server_id = .....
socket=/opt/mysql/mysql.sock
log-error=/opt/mysql/logs/mysql_error.log
pid-file=/opt/mysql/mysql.pid
open_files_limit=10240
back_log=600
max_connections=500
max_connect_errors=6000
wait_timeout=605800
#open_tables=600
#table_cache = 650
#opened_tables = 630

max_allowed_packet=32M
sort_buffer_size=4M
join_buffer_size=4M
thread_cache_size=300
query_cache_type=1
query_cache_size=256M
query_cache_limit=2M
query_cache_min_res_unit=16k

tmp_table_size=256M
max_heap_table_size=256M

key_buffer_size=256M
read_buffer_size=1M
read_rnd_buffer_size=16M
bulk_insert_buffer_size=64M

lower_case_table_names=1

default-storage-engine=INNODB

innodb_buffer_pool_size=2G
innodb_log_buffer_size=32M
innodb_log_file_size=128M
innodb_flush_method=O_DIRECT
#####################
long_query_time=2
slow-query-log=on
slow-query-log-file=/opt/mysql/logs/mysql-slow.log

[mysqldump]
quick
max_allowed_packet=32M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

  有的时候vim粘贴可能会出现一大坨#,注意留意把多余的#去掉

  替换掉之后保存并退出,开始初始化

cd /opt/mysql    #进入mysql安装根目录
chown -R mysql:mysql .
# 注意:MySQL 5.7.6之前的版本执行这个脚本初始化系统数据库
./bin/mysql_install_db --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data
# 5.7.6之后版本初始系统数据库脚本(本文使用此方式初始化)
./bin/mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data
./bin/mysql_ssl_rsa_setup

  注:如果使用–initialize参数初始化系统数据库之后,会在~/.mysql_secret文件中生成root用户的一个临时密码,同时也在初始化日志中打印出来了

7)配置mysql服务

cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld     # 添加到系统服务
chkconfig mysqld on        # 开机启动
service mysqld start       # 启动mysql服务

  此时若是启动不成功,出现一下情况

  执行 cat /var/log/mysqld.log 查看报错输出信息

  如果输出一下信息,根据报错信息修改相应配置

8)修改root密码

./bin/mysql -uroot -p

  提示输入密码,直接按回车即可,使用--initialize-insecure参数初始化mysql会生成一个空密码

  进入mysql之后执行

mysql > set password for root@localhost = 'mypassword';

  即可重置密码

   最后,在 /usr/local 中添加对于mysql的软连接

ln -s /opt/mysql /usr/local/mysql

如果中途编译失败了,需要删除cmake生成的预编译配置参数的缓存文件和make编译后生成的文件,再重新编译

cd ~/mysql-server
rm -f CMakeCache.txt
make clean

 

posted on 2017-12-30 23:07  c_night  阅读(406)  评论(0编辑  收藏  举报