MySQL 源码编译安装
脚本须知:
1. 该脚本目前只测试过mysql版本为5.6.x的源码,其他源码可以对本脚本稍作修改即可
2. 本脚本也可以使用wget mysql源码的方式进行,但考虑到后期提供源码的地址不可用,所以需要手动下载mysql 5.6.x的源码包并放入到/usr/local/src
3. 此脚本在编译安装过程中禁用了iptables和SElinux策略,如果你在使用iptalbes相关功能请先完成相关配置。
4. 该脚本主要是对此前尚未装过mysql的linux系统环境而写的,如果此前装过mysql请根据脚本适当修改,主要是在脚本添加判断语句,或者你也可以移除之前的mysql
版本 (mysql安装路径 配置文件)
5. 本脚本实现的主要功能是mysql 安全初始化安装;提供sysv风格的启动脚本;最基本的配置文件(你可以根据功能需要通过配置然后覆盖/etc/my.cnf实现定制)
6. mysql 5.6.30源码编译安装 默认没有开启查询缓存,你可以在my.cnf 通过此选项 query_cache_type = ON 来启用
#!/bin/bash
#
# Description: Automated Deployment compilation MySQL
# Author: jiajunwei
# Version: ---
# Environment:
# . Mysql-Version: mysql-5.6.x
# . Operating system: CentOS .x
# Advise: The MySQL data directory on a logical volume
# Preparation: Need to put the source package mysql-5.6.x.tar.gz to /usr/local/src #####################[Preparatory work before compiling]###################### # . Provide the compiler environment
echo -e "\033[31mThe First step:Check and Configure compile environment ......\033[0m" #if ! ping -c2 -w3 www.baidu.com &> /dev/null;then
# mkdir -p /etc/yum.repos.d/repo
# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo
# cat << EOF > /etc/yum.repos.d/CentOS-Media.repo
# [c6-media]
# name=CentOS-$releasever - Media
# baseurl=file:///media/cdrom/
# gpgcheck=1
# enabled=1
# gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#EOF
# mkdir -p /media/cdrom
# if od -ax /dev/cdrom | head -1 &> /dev/null;then
# umount /dev/cdrom &> /dev/null
# mount -r /dev/cdrom /media/cdrom
# else
# echo "Please mount the disk and load the system image"
# exit 2
# fi
#fi
yum -y groupinstall "Development Tools" &> /dev/null
yum -y install cmake bison ncurses-devel openssl-devel &> /dev/null
if [ $? -eq 0 ];then
echo "--------->Enviroment is ok "
else
echo "--->Failed to compile environment testing, please check"
exit 3
fi # 2. Add the operation of database users
echo -e "\033[31mThe second step:Add the operation of database users with user mysql......\033[0m"
[ ! `grep "mysql" /etc/group` ] && groupadd -r mysql
[ ! `grep "mysql" /etc/passwd` ] && useradd -r -d /mydata/data -g mysql -s /bin/false mysql
if id mysql &> /dev/null;then
echo "--------->Add user complete "
else
echo "--->Add user failed "
exit 4
fi
#[ -f /etc/yum.repos.d/repo/CentOS-Base.repo ] && mv /etc/yum.repos.d/repo/*.repo /etc/yum.repos.d/
# 3. To determine the database directory and modify it belongs to the main group
echo -e "\033[31mThe third step:Determine the data directory and modify the permissions......\033[0m"
mkdir -p /mydata/data
chown -R mysql.mysql /mydata/data
echo "--->OK" ################################[Compile and install MySQL]####################### echo -e "\033[31mThe forth step:Compile and install MySQL......\033[0m"
if ! ls -l /usr/local/src/mysql*.tar.* &> /dev/null;then
echo " Copy your source package to this path:/usr/local/src"
exit 5
fi
tar xf /usr/local/src/mysql*.tar.* -C /usr/local/src
dir_count=`find /usr/local/src/ -maxdepth 1 -type d -name "mysql*" | wc -l`
if [ $dir_count -eq 1 ];then
dir=`find /usr/local/src/ -maxdepth 1 -type d -name "mysql*"`
else
echo "This path cannot have two MySQL directories at the same time"
exit 5
fi
cd $dir
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/mydata/data/ \
-DSYSCONFDIR=/etc/ -DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DMYSQL_UNIX_ADDR=/mydata/data/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_DEBUG=0 -DENABLED_PROFILING=1 \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNODB_MEMCACHED=1
cpu_count=`cat /proc/cpuinfo | grep "processor" |wc -l`
make -j $cpu_count && make install
if [ $? -eq 0 ];then
echo "------->installation is complete"
else
echo "--->Compile failed, please check"
exit 6
fi ############################[boot startup script]#######################
echo -e "\033[31mThe Fifth step:Provide configuration files and sysV boot startup script for MySQL......\033[0m"
[ -f /etc/my.cnf ] && \mv -f /etc/my.cnf{,.bak}
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
sed -i '/^\[mysqld\]/ a \datadir=/mydata/data\nsocket=/mydata/data/mysql.sock\n \
pid-file=/var/run/mysqld/mysqld.pid\n \
log-error=/var/log/mysqld.log\n \
user=mysql\n \
innodb_file_per_table=ON\n \
skip_name_resolve=ON\n \
log-bin=/mydata/log-bin/mysql-bin' /etc/my.cnf
mkdir -p /var/run/mysqld
chown -R mysql.mysql /var/run/mysqld
mkdir -p /mydata/log-bin
chown -R mysql.mysql /mydata/log-bin
[ -f /etc/init.d/mysqld ] && \mv -f /etc/init.d/mysqld{,.bak}
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on
echo "------->OK" #############################[Export binary files]########################
echo -e "\033[31mThe sixth step:Export MySQL related binary files......\033[0m"
echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql-5.6.sh
#source /etc/profile
exec bash
if which mysqld_safe &> /dev/null;then
echo "------>export is successful"
else
echo "--->export is faild"
fi ###########################[MySQL database initialization]##################
echo -e "\033[31mThe seventh step:MySQL database initialization .......\033[0m"
cd /mydata/data
tar -jcf mydata-data.tar.bz2 *
unalias mv -f mydata-data.tar.bz2 /tmp/
rm -rf *
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf \
--basedir=/usr/local/mysql \
--datadir=/mydata/data/ \
--user=mysql
if [ $? -eq 0 ];then
echo "--->initiate is finished "
else
echo "------->initiate is failed "
exit 7
fi ###########################[Database Startup Test]####################
echo -e "\033[31mThe eighth step:Database Startup Test......\033[0m"
# 1. Set firewall and SELinux
service iptables stop
setenforce 0
# 2. Run mysql service
service mysqld start
if netstat -lntp | grep "mysql" &> /dev/null;then
echo "------->Service startup normal "
else
echo "---->Service startup failed "
exit 8
fi ########################[Run security setup script]#####################
echo -e "\033[31mThe last step: Run security setup script......\033[0m"
echo -e "\ny\nmysqldba\nmysqldba\ny\nn\ny\ny\n" | mysql_secure_installation
if [ ! $? -eq 0 ];then
echo "Security initialization failed, please run manually"
fi
echo -e "\033[31mPlease re check and configure the firewall policy and selinux, now they are disabled.\033[0m"
MySQL 源码编译安装的更多相关文章
- Dubbo入门到精通学习笔记(十九):MySQL源码编译安装、MySQL主从复制的配置
文章目录 MySQL 源码编译安装(CentOS-6.6+MySQL-5.6) 一.服务器配置: 二.源码安装 MySQL5.6.26: MySQL主从复制的配置 环境 依赖课程 MySQL 主从复制 ...
- Mysql源码编译安装&主从复制
一)camke源码编译安装mysql 1)创建软件安装目录software [root@master software]# ls cmake-2.8.8.tar.gz mysql-5.5.32.tar ...
- ubuntu下mysql源码编译安装
建议:cpu4核以上,内存4G以上 1. 安装环境:Ubuntu Server 14.10MySQL-5.6.23.tar.gz 2. 安装必备的工具sudo apt-get install make ...
- mysql源码编译安装
首先去官网http://dev.mysql.com/downloads/mysql/ 下载mysql源码.我下的是5.7.10 源码选择的是 Generic Linux (Architecture I ...
- MySQL 源码编译安装脚本
cat mysql_init.shmysql_init.sh mysql_init.sh.20190401 mysql_init.sh.back20171030 ...
- Mysql 源码编译安装 ( 5.5 、5.6 共存 )
简介: 如何在一台服务器同时运行两 ( 多 ) 个 MySQL 服务. 1.MySQL 5.6 shell > useradd -r -s /sbin/nologin mysql shell & ...
- 源码编译安装 MySQL 5.5.x 实践
1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...
- 总结源码编译安装mysql
最近在学习源码编译安装LAMP.LNMP时,一直遇到一个难题,就是就是mysql无论怎么源码编译安装,到最后启动服务都提示"Starting MySQL.The server quit wi ...
- 源码编译安装 MySQL 5.5.x 实践(转)
1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...
随机推荐
- ajax $.post 一直报 Forbidden (CSRF token missing or incorrect.)
由于后台整合类视图代码,所以修改了写法,完了之后用下面的写法写的post请求都报 403 error $.post( "{% url 'test_record:select_node_pag ...
- echarts事件中获取当前实例
直接使用this即可
- Voyager的Roles和Pemissions
以Page为例讲解: 取消admin的roles下Pages的Browse Pages权限: 打开web.php文件,添加: Route::get('pages', function(){ retur ...
- word域代码判断奇偶插入分页符
阿拉伯数字页码判断奇偶插入分页符(PAGE表示当前页码,QUOTE 12表示插入分页符) {IF{=MOD({PAGE},2)} = 1 "{ QUOTE 12}" " ...
- PHP 日常开发过程中的bug集合(持续更新中。。。)
PHP 日常开发过程中的bug集合(持续更新中...) 在日常php开发过程中,会遇到一些意想不到的bug,所以想着把这些bug记录下来,以免再犯! 1.字符串 '0.00'.'0.0'.'0' 是 ...
- leetcode-19-merge
88. Merge Sorted Array 解题思路: 需要注意,两个数组是排好序的,且nums1够大.所以从两个数组的尾端开始比较,大的那个放在nums1的尾部,并且放了之后就可以前进. 例如nu ...
- BFS、模拟:UVa1589/POJ4001/hdu4121-Xiangqi
Xiangqi Xiangqi is one of the most popular two-player board games in China. The game represents a ba ...
- ghost模板总结
ghost模板的二次开发相对容易,附文档: http://themes.ghost.org/v0.6.0/docs/meta_title 这里有各行变量的说明. {{#is "home&qu ...
- JAVA-基础(二) java.lang
1.String类提供了许多从String对象中截取字符的方法 1.1 char charAt(int where) 1.2 void getChars(int sourceStart, int so ...
- Django Form one
前戏: FromData:三种方式获取FromData 1. 创建一个FromData 的对象,然后再用append 的方法追个添加键值对 var formdata = new FormData(); ...