MySQL-5.7版本官方文档二进制离线安

发布时间 2023-09-26 21:34:59作者: the1729cranes

官网二进制包

脚本安装

#!/bin/bash
# 解决软件的依赖关系
yum install cmake ncurses-devel gcc gcc-c++ vim lsof bzip2 openssl-devel ncurses-compat-libs -y

# 解压mysqql二进制安装包
tar xf mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz

# 移动mysql解压后的文件到/usr/local下改名叫mysql
mv mysql-5.7.43-linux-glibc2.12-x86_64 /usr/local/mysql

# 新建组和用户mysql
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

# 关闭防火墙,并设置开机不启动
systemctl disable firewalld && systemctl stop firewalld

# 临时关闭selinux
setenforce 0
# 永久关闭selinux
sed -i '/^SELINUX=/ s/enforcing/disable/' /etc/selinux/config

# 新建存放数据的目录
mkdir -p /data/mysql
# 修改/data/mysql目录的权限归mysql组和msyql用户所有,这样mysql用户可以对这个文件夹进行读写
chown mysql:mysql /data/mysql
# 只是允许msyql组和mysql用户可以访问,其他人不能访问
chmod 750 /data/mysql

# 进入/usr/local/mysql/bin
cd /usr/local/mysql/bin

# 初始化mysql --》初始化、指定安装目录、指定数据存储位置、获取密码
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql &>passwd.txt

# 让mysql支持ssl方式登录的设置
./mysql_ssl_rsa_setup --datadir=/data/mysql

# 获得临时密码
tem_passwd=$(cat passwd.txt |grep "temporary" |awk '{print $NF}')
# $NF表示最后一个字段

# 修改PATH变量,加入mysql bin目录的路径 --》可以做bash环境下使用msyql命令
# 临时修改PATH变量的值
export PATH=/usr/local/mysql/bin/:$PATH
# 重新启动linux系统也生效,永久修改PATH变量
echo 'PATH=/usr/local/mysql/bin:$PATH' >>/root/.bashrc

# 复制support-files里的mysql.server文件到/etc/init.d目录下叫mysqld --》可以使用systemctl管理mysqld服务
cp ../support-files/mysql.server /etc/init.d/mysqld

# 修改/etc/init.d/mysqld脚本文件里的datadir目录的值 --》官方提供的脚本中datadir值和我们指定的不一样
sed -i '70c datadir=/data/mysql' /etc/init.d/mysqld

# 生成/etc/my.cnf配置文件 --》cnf就是这样写的没有写错
cat >/etc/my.cnf <<EOF
[mysqld_safe]

[client]
socket=/data/mysql/mysql.sock

[mysqld]
socket=/data/mysql/mysql.sock
port = 3306
open_files_limit = 8192
innodb_buffer_pool_size = 512M
character-set-server=utf8

[mysql]
auto-rehash
prompt=\\u@\\d \\R:\\m  mysql>
EOF

# 修改内核的open file的数量
ulimit -n 1000000
# 设置开机启动
echo 'ulimit -n 1000000' >>/etc/rc.local
chmod +x /etc/rc.d/rc.local

# 启动mysql服务 --》现在还不能使用systemctl命令
service mysqld start
# 将mysqld添加到linux系统里服务管理名单里 -->这里可以使用systemctl命令,但是不能使用enbale和disable
/sbin/chkconfig --add mysqld
# 设置mysqld服务开机启动
/sbin/chkconfig mysqld on

# 初次修改密码需要使用 --connect-expired-password 选项
# -e 后面接的表示是在mysql里需要执行命令 execute 执行
# 如果密码不符合规范会出现警告
mysql -uroot -p$tem_passwd --connect-expired-password -e "set password='123'"

# 校验修改密码是否成功,看是否能查看mysql的数据库
mysql -uroot -p'123' -e "show databases;"