文章目录

  • 二进制安装的优点
  • 准备工作
  • 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. 相比于编译安装,安装速度更快
  2. 可以根据自己的需要指定安装路径、配置文件信息以及数据文件位置等

准备工作

1.进入官网下载源码包

如下图

centos7部署 二进制mysql 二进制安装mysql_centos7部署 二进制mysql


版本:MySQL5.7.38

操作系统:Linux-Generic

操作系统版本:Linux-Generic(glib 2.12)(x86,64-bit)

2.上传源码到家目录下

这里我使用的是xshell中的xftp工具,将windows文件上传到Linux的家目录下

centos7部署 二进制mysql 二进制安装mysql_mysql_02

二进制安装步骤

解决软件依赖关系并且安装需要工具

[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是否安装成功

查看进程

centos7部署 二进制mysql 二进制安装mysql_数据库_03

查看端口

centos7部署 二进制mysql 二进制安装mysql_centos7部署 二进制mysql_04

到此为止,MySQL二进制安装就算成功啦!