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