文章目录
- 二进制安装的优点
- 准备工作
- 1.进入官网下载源码包
- 2.上传源码到家目录下
- 二进制安装步骤
- 解决软件依赖关系并且安装需要工具
- 解压二进制安装包
- 移动mysql解压后的文件到/usr/local下改名为mysql,/usr/local/mysql是mysql的安装目录
- 新建组和用户 mysql
- 关闭firewalld防火墙,并且设置开机不启动
- 临时关闭selinux
- 永久关闭selinux
- 新建存放数据的目录
- 修改/data/mysql目录的权限归mysql用户和mysql组所有,这样mysql用户启动的mysql进程可以对这个文件夹进行读写了
- 只允许mysql这个用户和mysql组可以访问,其他人不能访问
- 进入/usr/local/mysql/bin目录
- 初始化mysql
- 让mysql支持ssl方式登录的设置
- 使用awk命令截取临时密码
- 修改PATH变量,加入mysql bin目录的路径
- 临时修改PATH变量的值
- 设置开机启动
- 复制support-files里的mysql.server文件到/etc/init.d/目录下叫mysqld
- 修改/etc/init.d/mysql脚本文件里的datadir目录的值
- 生成/etc/my.cnf配置文件
- 修改内核的open file的数量
- 设置开机启动的时候也配置生效
- 启动mysqld进程
- 将mysqld添加到linux系统里的服务管理名单里
- 登录mysql
- 校验上一步密码是否成功,如果有输出能看到mysql里的数据库,说明成功。
- 查看MySQL是否安装成功
- 查看进程
- 查看端口
二进制安装的优点
为什么选择MySQL二进制安装呢?二进制安装有什么优点呢?
- 相比于编译安装,安装速度更快
- 可以根据自己的需要指定安装路径、配置文件信息以及数据文件位置等
准备工作
1.进入官网下载源码包
如下图
版本:MySQL5.7.38
操作系统:Linux-Generic
操作系统版本:Linux-Generic(glib 2.12)(x86,64-bit)
2.上传源码到家目录下
这里我使用的是xshell中的xftp工具,将windows文件上传到Linux的家目录下
二进制安装步骤
解决软件依赖关系并且安装需要工具
[root@mysql ~]# yum install -y cmake ncurses-devel gcc gcc-c++ vim lsof bzip2 openssl-devel ncurses-compat-libs net-tools
解压二进制安装包
[root@mysql ~]# tar xf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
移动mysql解压后的文件到/usr/local下改名为mysql,/usr/local/mysql是mysql的安装目录
[root@mysql ~]# mv mysql-5.7.38-linux-glibc2.12-x86_64 /usr/local/mysql
新建组和用户 mysql
[root@mysql mysql]# groupadd mysql
[root@mysql mysql]# useradd -r -g mysql -s /bin/false mysql
-r 指定新建用户为系统用户,只用作负责登录(专门只干某个活)
-g 指定新建用户的组为mysql
-s 指定新建用户的shell为 /bin/false–无法ssh登录–确保安全
关闭firewalld防火墙,并且设置开机不启动
[root@mysql mysql]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@mysql mysql]# systemctl disable firewalld
临时关闭selinux
[root@mysql mysql]# setenforce 0
永久关闭selinux
[root@mysql mysql]# sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config
新建存放数据的目录
[root@mysql mysql]# mkdir /data/mysql -p
修改/data/mysql目录的权限归mysql用户和mysql组所有,这样mysql用户启动的mysql进程可以对这个文件夹进行读写了
[root@mysql mysql]# chown mysql:mysql /data/mysql/
只允许mysql这个用户和mysql组可以访问,其他人不能访问
[root@mysql mysql]# chmod 750 /data/mysql/
进入/usr/local/mysql/bin目录
[root@mysql mysql]# cd /usr/local/mysql/bin/
初始化mysql
[root@mysql bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/ &>passwd.txt
初始化的目的:建立起mysql启动所需要的文件和库,存放在/data/mysql下
选项含义:
–initialize 初始化
–user 指定启动用户
–basedir 指定安装目录
–datadir 指定mysql数据目录
&>将输出重定向到passwd.txt文件里,方便后续使用awk截取获得密码
让mysql支持ssl方式登录的设置
[root@mysql bin]# ./mysql_ssl_rsa_setup --datadir=/data/mysql/
使用awk命令截取临时密码
[root@mysql bin]# tem_passwd=$(cat passwd.txt |grep temporary|awk '{print $NF}')
修改PATH变量,加入mysql bin目录的路径
临时修改PATH变量的值
[root@mysql bin]# export PATH=/usr/local/mysql/bin/:$PATH
export 因为是在脚本中执行,是在bash子进程中的定义的变量,要用export把它导出到当前bash进程中
设置开机启动
[root@mysql bin]# echo 'PATH=/usr/local/mysql/bin:$PATH' >>/root/.bashrc
复制support-files里的mysql.server文件到/etc/init.d/目录下叫mysqld
[root@mysql bin]# cp ../support-files/mysql.server /etc/init.d/mysqld
修改/etc/init.d/mysql脚本文件里的datadir目录的值
[root@mysql bin]# sed -i '70c datadir=/data/mysql' /etc/init.d/mysqld
生成/etc/my.cnf配置文件
[root@mysql bin]# 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的数量
[root@mysql bin]# ulimit -n 1000000
设置开机启动的时候也配置生效
[root@mysql1 ~]# echo "* soft nofile 65535" >>/etc/security/limits.conf
[root@mysql1 ~]# echo "* hard nofile 65535" >>/etc/security/limits.conf
启动mysqld进程
[root@mysql bin]# service mysqld start
将mysqld添加到linux系统里的服务管理名单里
[root@mysql bin]# systemctl enable mysqld
登录mysql
[root@mysql bin]# mysql -uroot -p$tem_passwd --connect-expired-password -e "set password='Mysql666#';"
-e 后面接的表示是在mysql里需要执行的命令,execute执行
set password=‘Mysql666#’修改root用户的密码为Mysql666#
校验上一步密码是否成功,如果有输出能看到mysql里的数据库,说明成功。
[root@mysql bin]# mysql -uroot -p'Sanchuang123#' -e "show databases;"
查看MySQL是否安装成功
查看进程
查看端口
到此为止,MySQL二进制安装就算成功啦!