1、进入MySQL官网,下载二进制tar.gz压缩包
2、解压安装二进制tar,gz压缩包
- 解压刚刚下载的tar.gz 压缩文件,并移动至/usr/local/mysql
shell> tar -xvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
shell> mv mysql-5.7.23-linux-glibc2.12-x86_64 /usr/local/mysql
shell> yum install libaio
3、创建mysql用户、用户组、配置环境变量
shell> groupadd -g 27 -o -r mysql
#注释:groupadd -g27 和 -o 选项用于分配一个非唯一的 group ID (GID), -r 选项使组成为系统组。
shell> useradd -M -N -g mysql -o -r -d /usr/local/mysql/data -s /bin/false -c "MySQL Server" -u 27 mysql
#注释 -M 选项为防止创建用户主目录
# -N 选项表示应该将用户添加到 -g 选项指定的group中。
# -o 和 -u 27选项分配一个非唯一用户ID (UID)。
# -r 和 -s /bin/false 选项创建的用户不需要登录服务器主机。mysql用户仅用于所有权目的,而不用于登录。
# -d 选项指定用户登录目录,该目录设置为MySQL数据目录路径。此次安装 本机mysql的数据目录为 /usr/local/mysql/data (安装目录可根据实际需求更改)
# -c 选项指定了一个描述,mysql用户 的注释
shell> export PATH=/usr/local/mysql/bin:$PATH #将 mysql bin目录添加至系统环境变量
-
创建用于导入和导出操作的安全目录
为了限制文件特权的范围,创建一个用户可以安全地使用文件特权进行导入和导出操作的目录。在此部署中,创建的目录名为mysql-files
shell> cd /usr/local/mysql #进入mysql目录
shell> mkdir mysql-files #创建文件夹
shell> chown mysql:mysql mysql-files #将 mysql-files 文件夹的 所属组、所属用户 配置为 mysql组、mysql用户
shell> chmod 750 mysql-files #将 mysql文件夹权限配置为 750 即 所属用户拥有(读、写、执行)权限;所属组拥有(读)权限;其他用户无权限
# (linux文件、文件夹权限本文不做详细讲解)
4、初始mysql配置
shell> cd /etc
shell> touch my.cnf #创建 mysql 配置文件 my.cnf
shell> chown root:root my.cnf #将mysql 配置文件的所属组、所属用户 配置为 root组、root用户
shell> chmod 644 my.cnf #将mysql配置文件的权限设置为 644 即 所属用户拥有(读、写)权限;所属组拥有(读)权限;其他用户拥有(读)权限
shell> vim my.cnf #编辑配置文件 配置内容如下
[mysqld]
datadir=/usr/local/mysql/data # mysql数据存储目录
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/localhost.localdomain.err
user=mysql #固定用户
secure_file_priv=/usr/local/mysql/mysql-files #设置导入导出文件目录
local_infile=OFF #为了避免加载数据的本地版本可能出现的安全问题,请确保默认启用local_infile
max_connections = 200 # 支持的最大并发链接数,这个根据实际业务需求去设置
query_cache_size = 100M #指定MySQL查询缓冲区的大小,本机内存为2G 设置100M左右即可
thread_cache_size = 15 # 缓存的最大线程数,本机内存2G 设置15个左右即可
wait_timeout = 20 #(秒)指定一个请求的最大连接时间,默认为28800 (八小时)
expire_logs_days = 30 #超过30天的binlog删除
long_query_time = 1 #慢查询时间 超过1秒则为慢查询
slow_query_log_file = /etc/mysql/slow.log #查询日志文件
lower_case_table_names = 1 #不区分大小写
shell> cd /usr/local/mysql
shell> mkdir data #床架mysql用于存放数据的文件夹
shell> chmod 750 data #设置权限
shell> chown mysql:mysql data #分配文件夹 所属组、所属用户
shell> bin/mysqld --defaults-file=/etc/my.cnf --initialize #初始化数据目录
#初始化的信息输出到了my.cnf中配置的 log-error 所在的错误日志文件中,其中包括初始的随机密码;结果如下图
5、mysql启动服务配置
shell> cd /usr/lib/systemd/system
shell> touch mysqld.service #创建mysql服务文件
shell> chmod 644 mysqld.service #配置权限
shell> vim mysqld.service #编辑服务文件
#=================mysqld.service 文件内容 start=================
[Unit]
Description=MySQL Server
Documentation=man:mysqld(7)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/usr/local/mysql/data/mysqld.pid #pid文件为 mysql存放数据的文件夹下
TimeoutSec=0 # 为mysqld服务禁用系统的服务启动和停止超时逻辑。
# 启动主服务 指定启动服务文件 默认配置文件 pid文件
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize --pid-file=/usr/local/mysql/data/mysqld.pid $MYSQLD_OPTS
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
#======================== end ========================================
#配置 systemd tmpfiles特性
shell> cd /usr/lib/tmpfiles.d
shell> touch mysql.conf
shell> chmod 644 mysql.conf
shell> vim mysql.conf
#==========mysql.conf 文件内容===============
d /usr/local/mysql/data 0750 mysql mysql -
#=============== end ================
- 设置mysql服务开机启动、启动服务、查看服务启动状态、停止服务
shell> systemctl enable mysqld.service #设置服务开机启动 或者 systemctl enable mysqld
shell> systemctl start mysqld.service #开启服务
shell> systemctl status mysqld.service #查看服务当前状态
shell> systemctl stop mysqld.service #停止服务
6、重置mysql root账户密码
shell> cd /usr/local/mysql/bin #进入mysql bin目录
shell> ./mysql -uroot -p
#Enter password: 然后输入刚刚的临时密码 进入mysql命令行
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
#Query OK, 0 rows affected (0.00 sec) 修改成功
7、开启防火墙端口
shell> firewall-cmd --zone=public --add-port=3306/tcp --permanent # --permanent选项为永久生效,没有此参数重启后失效
shell> firewall-cmd --reload #重新加载防火墙