mysql5.7二进制安装
1、首先登陆mysql官网,下载社区版安装包,如图:

2、解压安装包到指定目录,执行命令如下:
tar -xf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

3、在当前目录创建软连接,执行命令如下:
ln -sv mysql-5.7.35-linux-glibc2.12-x86_64/ mysql

4、创建普通用户和组,执行命令如下:
#创建用户组,并设置gid为1000
groupadd -g 1000 mysql
#创建用户mysql并设置uid为1000,加入到组中,并设置为不可登陆
useradd -g mysql -u 1000 -s /sbin/nologin mysql

5、给mysql目录和配置文件设置属主和属组,如下:
#进入目录
cd /usr/local/mysql
#设置mysql的属主和属组
chown -R mysql:mysql mysql/*
chown -R mysql:mysql mysql-5.7.35-linux-glibc2.12-x86_64
#设置my.cnf的属主和属组
chown mysql:mysql /etc/my.cnf
my.cnf文件内容如下:
[client]
port=3306
socket=/data/mysql/data/mysql.sock
[mysqldump]
quick
max_allowed_packet = 16M
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/data
port = 3306
server-id = 1
socket = /data/mysql/data/mysql.sock
skip_name_resolve = 1 #禁止解析主机名,只能用IP检查客户端登陆
character-set-server = utf8mb4 #设置默认字符集
collation-server = utf8mb4_general_ci #字符集排序规则
init_connect='SET NAMES utf8mb4' #设置client连接mysql时的字符集,防止乱码
lower_case_table_names = 1 #是否对sql语句大小写不敏感,1表示不敏感
key_buffer_size = 16M
max_allowed_packet = 8M
sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
default-storage-engine=INNODB #默认存储引擎
pid-file = /usr/local/mysql/mysqld.pid #pid文件
default-time_zone = '+8:00' #数据库时间设置为北京时间
log-bin =/data/mysql/binlog/mysql-bin
expire-logs-days=15 #清理binlog日志
max_binlog_size = 1073741824
max_connections = 6000 #最大进程连接数
max_connect_errors = 6000 #最大错误连接数
table_open_cache = 2048 #表描述符缓存大小,可以减少文件打开关闭次数
max_allowed_packet = 64M #消息传输量的最大值
binlog_format = mixed #binlog日志类型
slow_query_log = ON #开启慢查询
slow_query_log_file=/data/mysql/data/slow_query.log
long_query_time=1 #慢查询时间,设置为1s
wait_timeout=84600
interactive_timeout=84600
[mysqld_safe]
open-file-limit = 28192 #
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
6、将Mysql可执行文件添加到环境变量中,执行命令如下:
#添加到环境变量中
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
#执行命令生效
source /etc/profile
7、创建数据目录和binlog目录,并初始化,执行命令如下:
#创建目录
mkdir -p /data/mysql/{data,binlog}
#给数据目录设置属主和属组
chown -R mysql:mysql /data/mysql
#执行命令初始化
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
初始化成功后可以data目录看到如下内容:

在界面也可以看到root初始密码,如图:

8、copy可执行文件到/etc/init.d/目录下,执行命令如下:
#将/usr/local/mysql/support-files/mysql.server拷贝到/etc/init.d并重命名
cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
9\、启动mysql,并登陆,执行命令如下:
#启动mysql
/etc/init.d/mysqld start
#通过初始密码登陆mysql
mysql -uroot -pKglgqd7aaL*w

10、登陆后修改默认密码为自定义密码,如下:
alter user root@'%' identified by "新密码"
flush privileges

安装脚本如下:
#!/bin/bash
# @Author: GongGuan
# @Date: 2021-10-26
set -e
echo "**********************Install MySQL*********************"
workdir=/usr/local/
echo "************tar xf file*************"
FileName=mysql-5.7.35-linux-glibc2.12-x86_64.tgz
#解压文件并创建软链接
if [ -f $FileName ];then
tar zxvf $FileName -C ${workdir}
if [ $? -eq 0 ];then
echo "********File decompression Success********"
echo "********Create Soft Link********"
cd ${workdir}
ln -s mysql-5.7.35-linux-glibc2.12-x86_64/ mysql
echo "********Soft Link Create Success********"
echo "********Copy my.cnf to /etc/********"
\cp -a mysql/support-files/my.cnf /etc/
else
echo "File Decompression Faild,Please Check!!!"
exit 1
fi
else
echo "No Found File,Please Check!!!"
fi
#创建普通用户和组
echo "********create mysql user and group********"
[ -z "$(grep 'mysql' /etc/group | awk -F ':' '{print $1}')" ] && groupadd -g 1000 mysql
[ -z "$(grep 'mysql' /etc/passwd | awk -F ':' '{print $1}')" ] && useradd -g mysql -u 1000 -s /sbin/nologin mysql
#给mysql目录和配置文件设置属主和属组
echo "********Set permissions********"
chown -R mysql:mysql mysql/*
chown mysql:mysql /etc/my.cnf
#将mysql可执行文件添加到环境变量中
echo "********Add mysql Binary file to env********"
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
#c创建数据目录和binlog目录,执行初始化
echo "********create data directory or binlog directory********"
[ ! -d "/data/mysql/data" -o ! -d "/data/mysql/binlog" ] && mkdir -p /data/mysql/{data,binlog}
chown -R mysql:mysql /data/mysql
echo "********mysql initialization********"
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
passwd_root=$(grep 'temporary password' /data/mysql/data/mysql_error.log | awk '{print $11}')
[ -n "${passwd_root}" ] && echo "<<<<<<<<<<mysql初始化成功>>>>>>>>>>>>"
echo "root密码为:${passwd_root}" > /data/mysql/mysql_root_passwd.txt
#copy可执行文件到/etc/init.d/目录下,并重命名为mysqld
\cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
echo "********将mysql设置为开机自启动********"
echo "/etc/init.d/mysqld start" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
#启动Mysql并执行登陆测试
echo "********start mysqld**********"
/etc/init.d/mysqld start
注意:上面脚本中执行后获取的只是初始密码,还需要登陆进去修改密码


