Compile and install mysql-5.2.27 and the script automatically install mysql

Environment Introduction

Centos7.x version, Mysql-5.7.27
Mysql source package are:mysql-boost-5.7.27.tar.gz

The first step: install the required build environment and development tools package
yum -y update 		----->升级所有的包、改变软件设置和系统设置,系统版本和内核都升级(可以不做,可选)
yum -y groupinstall "Development Tools"    ---->下载安装开发组工具
yum -y install ncurses ncurses-devel bison libgcrypt perl make cmake
Step two: add user mysql mysql running in the system as well as group
groupadd mysql
useradd -M -g mysql -s /sbin/nologin mysql   
-M:不创建家目录
-g:指定所属组
-s:指定mysql用户的登陆shell --->nologin 表示该用户不能登陆
Step 3: Create a directory mysql directory, and store data required for the installation
mkdir -p /usr/local/mysqld/{data,mysql,log,tmp}
chown -R mysql.mysql /usr/local/mysqld/* 			---->需要将创建的所有目录的所属组和所有者均设置为mysql用户
Step four: mysql pressurized source package to the next / opt / directory (personal habits, you can customize)
tar -zxf mysql-boost-5.7.24.tar.gz /opt/
Step five: mysql precompiled source code
# 注意需要先切换到解压之后的文件的目录下去执行cmake命令
cd /opt/mysql-5.2.27/
开始预编译,执行以下命令:
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysqld/mysql \      --->指定安装mysql的目录
-DMYSQL_DATADIR=/usr/local/mysqld/data \              --->指定mysql安装的数据存放目录
-DWITH_BOOST=/opt/mysql-5.7.26/boost				  --->指定boost库的目录路径
-DDEFAULT_CHARSET=utf8								  --->指定数据库的编码为utf8

正常情况下最后三行为如下所示:
-- Configuring done
-- Generating done
-- Build files have been written to: /opt/mysql-5.7.24
Step Six: mysql compile the source code, and installation
注意:依然是在解压之后的mysql源码包的目录下执行该命令(对,你没看错,就只是make)
make
执行到100%,没有报错提示 error 即可,也可以echo $? ,执行为0即可
没有出错之后就执行以下命令
make install

Even more to compile and install mysql success!
Next to set up some of mysql environment;

Initialization mysql, mysql command and the upgraded system-level command
echo "export PATH=$PATH:/usr/local/mysqld/mysql/bin" >> /etc/profile
source /etc/profile 									---->执行完命令才生效

将安装好的msyql的目录下的所有文件均修改属主、属组为mysql
chown -p mysql.mysql /usr/local/mysqld/*

将/etc/my.cnf 修改一下文件名作为备份
mv /etc/{my.cnf,my.cnf.bak}

然后将/usr/local/mysqld/mysql/mysql-test/include目录下的default_my.cnf文件复制一份到/etc/下,作为新的
my.cnf文件
cp /usr/local/mysqld/mysql/mysql-test/include/default_my.cnf /etc/my.cnf

编辑/etc/my.cnf文件
保留原文件的前三行然后添加如下内容:
[mysqld]
basedir = /usr/local/mysqld/mysql
datadir = /usr/local/mysqld/data
tmpdir = /usr/local/mysqld/tmp
socket = /usr/local/mysqld/tmp/mysql.sock
pid_file = /usr/local/mysqld/tmp/mysqld.pid
log_error = /usr/local/mysqld/log/mysql_error.log
slow_query_log_file = /usr/local/mysqld/log/slow_warn.log

server_id = 19216816110
user = mysql
port = 3306
bind-address = 0.0.0.0
character-set-server = utf8
default_storage_engine = InnoDB


企业中常用的MySQL部署参数:<参考使用>
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysqld/mysql \	# 安装位置
    -DMYSQL_DATADIR=/usr/local/mysqld/data \		# 指定数据目录
    -DDOWNLOAD_BOOST=1 \	# 是否下载boost
    -DWITH_BOOST=/root/mysql-5.7.24/boost \	# boost目录
    -DSYSCONFDIR=/etc \ #配置文件目录
    
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \		#数据库引擎
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
    -DWITH_FEDERATED_STORAGE_ENGINE=1 \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    
    -DENABLED_LOCAL_INFILE=1 \	
    -DENABLE_DTRACE=0 \
    -DDEFAULT_CHARSET=utf8 \	# 使用utf-8编码
    -DDEFAULT_COLLATION=utf8_general_ci \
    -DWITH_EMBEDDED_SERVER=1

Here Insert Picture Description

Perform database service initialization, start mysql service
mysqld --defaults-file=/etc/my.cnf --initialize --user='mysql'
启动mysql服务(安全启动)
mysql_safe --defaults-file=/etc/my.cnf &

此时即可登录数据库,此时我们需要先获取密码
grep password /usr/local/mysqld/log/mysql_error.log
登录数据库
mysql -uroot -p'上面获取的密码'


如果此时报错登录不上为下面的错:
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQ server through socket '/tmp/mysql.sock' (2)

解决办法:
ln -s /usr/local/mysqld/tmp/mysql.sock /tmp/mysql.sock

然后就可以登录了!

Next, configure some configuration, so that mysql boot

cp /usr/local/mysqld/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

Then realize is how quickly compiled and installed on another machine msyql

== ideas: == Since we've compiled and installed MySQL well above a machine, so it can be installed to compile the directory to package, upload it to the machine need to install MySQL, and then automatically install script by the way;

1、由于在另一台机器上也需要将/usr/local/mysqld/mysql/mysql-test/include/default_my.cnf 文件覆盖配置/etc/my.cnf,因此我们在已经安装好的那台机器上将已经写好的/etc/my.cnf 文件内容覆盖到defaul_my.cnf文件中去
cat /etc/my.cnf >> /usr/local/mysqld/mysql/mysql-test/include/default_my.cnf

2、在已经安装好了mysql的机器上将文件进行打包(打包的文件是/usr/local/mysqld/*)
ps 注意,这里有个小技巧,为了能直接解压缩出来就是mysqld这个文件夹,需要切换到/usr/local/目录下来进行操作
cd /usr/local/
tar -Jcf mysql_install.tar.xz ./mysqld      ------>使用xz的压缩方式能够将文件压缩到最小方便传输(压缩的时间会有点长,大概10分钟吧)

3、开始编写在需要安装mysql的机器上执行的脚本
#!/usr/bin/env bash
# 由于我们是将已经编译好的压缩包进行安装,所以不需要安装编译环境工具等
# 第一步关闭主机防火墙以及selinx
systemctl stop firewall &>/dev/null
systemctl disable firewalld &>/dev/null
setenforce 0 &>/dev/null
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# 第二步,判断是存在mysql用户和mysql用户组,没有则创建mysql用户、用户组
# 判断是否存在mysql组
MYSQL_GROUP="mysql"
egrep "^${MYSQL_GROUP}" /etc/group &>/dev/null
if [ $? -ne 0 ];then
	groupadd mysql
fi
#
# 判断是否存在mysql用户
id mysql
if [ $? -ne 0 ];then
	useradd -M -g mysql -s /sbin/nologin mysql
else
# 强制修改mysql用户所属组为mysql
	usermod -G mysql mysql
fi

# 将mysql命令提升至系统命令级别
echo "export PATH=$PATH:/usr/local/mysqld/mysql/bin" >> /etc/profile.d/mysql.sh
chown -R mysql.mysql /usr/local/mysqld/
mv /etc/{my.cnf,my.cnf.bak}
cp /usr/local/mysqld/mysql/mysql-test/include/default_my.cnf /etc/my.cnf

cp /usr/local/mysqld/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

# 软链接/usr/local/mysqld/mysql/support-files/mysql.server 到 /usr/bin/下
# 将该mysql启动关闭命令可执行文件软链接到/usr/bin/下成为环境变量,并且重命名为mysqlctl,即可以使用mysqlctl start/stop 来启动mysql服务
ln -s /usr/local/mysqld/mysql/support-files/mysql.server /usr/bin/mysqlctl
mysqlctl start
if [ $? -eq 0 ];then
	ln -s /usr/local/mysqld/tmp/mysql.sock /tmp/mysql.sock
else
	echo "faild...."
	exit
fi
echo 'please excute "source /etc/profile"'
exit 0

Install mysql steps to achieve:

# 将打包好的压缩包远程发送到主机中
scp /path/mysql_install.tar.xz [email protected]:/usr/local/
# 在需要安装mysql的服务器上解压该文件(记得必须将压缩包传输到/usr/local/下)
tar -Jxf /usr/local/mysql_install.tar.xz   (需要一点时间解压,等待即可)
# 执行以上写好的脚本即可
bash xxx 
获取登陆密码,即可登陆mysql(参考上面获取密码的命令)

So installation problems may occur uuid repeat, we can change it!

Published 10 original articles · won praise 1 · views 197

Guess you like

Origin blog.csdn.net/yang_x_b/article/details/104284037