手动二进制部署
1.下载安装包并解压
cd /usr/src
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz
解压
xz -d mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz
tar xvf mysql-8.0.25-linux-glibc2.12-x86_64.tar
mv mysql-8.0.25-linux-glibc2.12-x86_64 /usr/local/mysql
2.用户和目录创建,创建MySQL用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
创建相关目录
mkdir /data/mysql/ -p
mkdir /data/mysql/{binlog,data,log,tmpdir,conf} -p
修改属主
chown -R mysql:mysql /data/mysql/
chown -R mysql:mysql /usr/local/mysql
3.增加配置文件
vim /data/mysql/conf/my.cnf
4.初始化并获取临时密码
/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/conf/my.cnf --user=mysql --initialize
grep "password" /data/mysql/log/mysql.err
5.启动MySQL
首先配置启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/
编辑 vim /etc/init.d/mysql.server
datadir=/data/mysql/data
confdir=/data/mysql/conf
找到
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
修改成
$bindir/mysqld_safe --defaults-file=$confdir/my.cnf --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
找到
--datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'`
修改成
--datadir=*) datadir="/data/mysql/data/"
重新加载服务配置
systemctl daemon-reload
启动MySQL
service mysql start
6.增加环境变量
source /etc/profile
加入
MYSQL_HOME=/usr/local/mysql
PATH=$PATH:$MYSQL_HOME/bin
export PATH MYSQL_HOME
7.登录并修改密码
mysql -uroot -p'j#D_tdy.p0tT'
alter user user() identified by 'haohao';
8.关闭mysql
mysqladmin -S /tmp/mysql.sock -p shutdown
使用 Shell 编写自动部署 MySQL 脚本
#!/bin/bash
# 解压
if [ -d "/usr/local/mysql" ];then
echo "/usr/local/mysql文件夹已经存在,请确定是否安装了MySQL"
exit
fi
echo "正在解压压缩包"
tar xf mysql-8.0.25-linux-glibc2.12-x86_64.tar
mv mysql-8.0.25-linux-glibc2.12-x86_64 /usr/local/mysql
echo "压缩包解压完毕"
# 创建MySQL相关目录
if [ -d "/data/mysql/" ];then
echo "/data/mysql/文件夹已经存在,请确定是否安装了MySQL"
exit
fi
mkdir /data/mysql/{binlog,data,log,tmpdir,conf} -p
# 判断是否有MySQL进程
mysql_pid=`ps -ef |grep mysqld |wc -l`
if [ $mysql_pid -eq 1 ];then
echo "没有MySQL进程在运行"
else
echo "有MySQL进程在运行,请检查"
exit
fi
# 创建MySQL用户
mysql_user=`cat /etc/passwd |grep -w mysql|wc -l`
if [ $mysql_user -eq 1 ];then
echo "MySQL用户已经存在"
else
echo -e "MySQL用户不存在,开始添加MySQL用户"
groupadd mysql
useradd -g mysql mysql
echo -e "添加MySQL用户成功"
fi
# 修改权限
chown -R mysql:mysql /data/mysql/
chown -R mysql:mysql /usr/local/mysql
# 增加配置文件
cp ./my.cnf /data/mysql/conf/
# 初始化
echo -e "开始初始化"
/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/conf/my.cnf --user=mysql --initialize
#判断初始化是否成功
mysql_init=`cat /data/mysql/log/mysql.err |grep -i "root@localhost:"|wc -l`
if [ $mysql_init -eq 1 ];then
echo "mysql 初始化成功"
else
echo "mysql 初始化失败"
exit
fi
# 获取临时密码
temp_pwd=$(grep 'temporary password' /data/mysql/log/mysql.err)
pwd=${temp_pwd##* }
echo "临时密码是:${pwd}"
# 配置启动脚本
if [ ! -f "/etc/init.d/mysql.server" ];then
cp mysql.server /etc/init.d/ -rf
chmod 700 /etc/init.d/mysql.server
fi
# 启动MySQL
/etc/init.d/mysql.server start
#增加环境变量
mysql_path=`grep 'export PATH=$PATH:/usr/local/mysql/bin' /etc/profile|wc -l`
if [ $mysql_path -eq 0 ];then
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
fi
#通过临时密码登录MySQL,并修改密码
mysql -uroot -p${PWD} --conn