linux安装MySQL5.7(安装、开机自启、定时备份)

一、安装步骤

我喜欢安装在/usr/local/mysql目录下

#切换目录
cd /usr/local/
#下载文件
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
#解压文件
tar -zxvf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local
#删除压缩包 
rm -rf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
#文件改名
mv mysql-5.7.38-linux-glibc2.12-x86_64 mysql-------创建mysql用户组 一定按照如下要求来安装!!!-----------
# 创建MySQL用户组 
groupadd mysql
# 添加MySQL用户并添加到MySQL用户组
useradd -r -g mysql mysql-------创建数据目录-----------cd /usr/local/mysql 
mkdir data
#赋予权限
chown mysql:mysql -R /usr/local/mysql/data/

配置mysql的配置文件

#增加配置文件
vim /etc/my.cnf
#内容如下[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4

mysql初始化

./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --initialize–defaults-file:默认配置文件地址
–datadir:mysql存储数据目录 按照实际地址来!!!!!!!!!
–basedir:mysql安装目录 按照实际地址来!!!!!!!!!!
–user:mysql用户

请牢记返回的默认密码

启动服务

/usr/local/mysql/support-files/mysql.server start

启动成功截图

# 设置密码
SET PASSWORD = PASSWORD('ok');
# 设置用户的访问密码用不过期
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
#刷新权限
FLUSH PRIVILEGES;

#开启可以远程登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码';
#刷新权限
FLUSH PRIVILEGES;

开启端口白名单

# 开启端口3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 查看已经开放的端口
firewall-cmd --list-ports

配置环境变量

如果不配置我们需要去bin目录下执行mysql 主要方便连接使用和操作

#将MySQL设置为命令
export PATH=/opt/lampp/bin:$PATH
source /etc/profile

导入文件出现的问题

the table is full

根据网上的教程,在my.cnf文件夹增加如下配置,重启mysql后并未生效

tmp_table_size = 1024M
max_heap_table_size = 1024M

通过命令尝试查看mysql版本号,想去搜索一下是否是版本问题,发现提示配置文件内容错误

我也只是草率看网上直接复制到最后面[client]就完事了,实际我们在粘贴中需要追加到[mysqld]下方。

2. 设置mysql开机自启动

方案一 将mysql交给systemctl来管理

#创建文件

vi /etc/systemd/system/mysqld.service

#文件内容

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/8.0/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
Type=simple
TimeoutSec=0
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS
# EnvironmentFile=/etc/sysconfig/mysql
LimitNOFILE=65535
Restart=on-failure
RestartPreventExitStatus=1
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false
 

执行命令

加载 systemctl文件

systemctl daemon-reload
启动 MySQL

systemctl start mysqld
关闭Mysql

systemctl stop mysqld

重启mysql

systemctl restart mysqld

设置开机自启

systemctl enable mysqld
 

方案二 创建启动脚本

#在/etc/rc.d/init.d/编辑一个新文件autostartmysql.sh
cd /etc/rc.d/init.d/


vim ./autostartmysql.sh


#文件内容

#!/bin/sh
# chkconfig: 2345 10 90
# description: myservice...
/usr/local/mysql/support-files/mysql.server start

#为autostartmysql.sh赋予权限
chmod +x ./autostartmysql.sh
#将autostartmysql.sh添加到 chkconfig 中
chkconfig --add ./autostartmysql.sh 
chkconfig autostartmysql.sh on
#查看是否添加成功
chkconfig --list

看到3、4、5状态为开或者为 on 则表示成功。如果是 关或者 off 则执行一下

chkconfig --level 345 autostartmysql.sh on

#删除开启自启任务
chkconfig --del

3.Mysql每晚定时备份

准备备份脚本

vim  /usr/local/mysql/backupdb.sh

#!/bin/bash
#备份路径
BACKUP=/home/mysql-bak/ae
#当前时间
DATETIME=$(date +%Y-%m-%d)
LOG_FILE=/usr/local/mysql/bak-sh/logs/ae/$DATETIME".log"
echo "===备份开始:$(date +"%Y-%m-%d %H:%M:%S")===" | tee -a ${LOG_FILE}#数据库名称
DATABASE=ae
#数据库地址
HOST=127.0.0.1
#数据库用户名
DB_USER=root
#数据库密码
DB_PW=root
#创建备份目录
[ ! -d "${BACKUP}/$DATETIME" ] && mkdir -p "${BACKUP}/$DATETIME"
[ ! -d "${LOG_FILE}" ] && touch "${LOG_FILE}"
echo "备份文件存放于${BACKUP}/$DATABASE-$DATETIME.sql" | tee -a ${LOG_FILE}
#开始备份
echo "===备份文件开始===" | tee -a ${LOG_FILE}
mysqldump --verbose  -h localhost  -u${DB_USER} -p${DB_PW}  ${DATABASE} >${BACKUP}/$DATETIME/$DATABASE-$DATETIME.sql 2>> $LOG_FILE
echo "===备份文件结束===" | tee -a ${LOG_FILE}
#压缩成tar.gz包
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#备份到服务器B
#scp $DATABASE-$DATETIME.sql root@ip:/home/mysqlBackup
#删除备份目录
rm -rf ${BACKUP}/$DATETIME
#删除10天(不含)前备份的数据,这边可以自行更改
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "===数据库备份到服务器成功==="

创建定时任务

#添加任务
crontab -e
#添加指令 下方是每晚一点执行
00 01 * * * /bin/sh /usr/local/mysql/backupdb.sh

出现的问题

  • mysqldump命令找不到

/usr/local/mysql/bak-sh/ae-bak.sh:行23: mysqldump: 未找到命令。

解决方案1:

在配置文件中将mysqldump命令改为绝对路径。

whereis mysqldump   命令搜索

解决方案2:

#添加指令 下方是每晚一点执行 增加source /etc/profile

00 01 * * * source /etc/profile && /bin/sh /usr/local/mysql/bak-sh/ae-bak.sh

#查看定时任务执行日志

cat   /var/log/cron

#查看定时任务执行中打印的日志
cat /var/spool/mail/root

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/625107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ERP和MES对接的几种接口方式

在数字化工厂的规划建设中,信息化系统的集成,既是重点,但同时也是难点。ERP和MES对接时,ERP主要负责下达生产计划,MES是执行生产计划,二套系统在数据交互时,需要确保基础数据的一致性&#xff0…

SpringBoot源码分析

一:简介 由Pivotal团队提供的全新框架其设计目的是用来简化新Spring应用的初始搭建以及开发过程使用了特定的方式来进行配置快速应用开发领域 二:运行原理以及特点 运行原理: SpringBoot为我们做的自动配置,确实方便快捷&#…

傅里叶级数到傅里叶变换

傅里叶级数 定义形式 f ( t ) 1 2 α 0 ∑ n 1 ∞ [ α n c o s ( n ω t ) β n s i n ( n ω t ) ] f(t)\frac{1}{2}\alpha_0 \sum_{n1}^{\infty}[\alpha_ncos(n\omega t)\beta_n sin(n \omega t)] f(t)21​α0​n1∑∞​[αn​cos(nωt)βn​sin(nωt)] 其中 ω 2 π…

STC8H8K蓝牙智能巡线小车——2. 点亮左右转弯灯与危险报警灯

任务调用示例 RTX 51 TNY 可做多任务调度,API较为简单。 /* 接口API */// 创建任务 extern unsigned char os_create_task (unsigned char task_id); // 结束任务 extern unsigned char os_delete_task (unsigned char task_id);// 等待 extern unsig…

算法训练营Day45(完全背包)

70. 爬楼梯 (进阶) 题目页面 (kamacoder.com) 完全背包的排列问题 import java.util.Scanner; class Main{public static void main(String [] args){Scanner sc new Scanner(System.in);int m,n;while(sc.hasNextInt()){n sc.nextInt();m sc.nextInt…

C++ 类构造函数 析构函数

类的构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。 下面的实例有助于更好地…

C#学习教程

目录 版本:VS2022 一、C#简介 程序定义: 程序的的作用:

阿里云如何完全卸载阿里云盾(安骑士)并屏蔽阿里云盾IP

事情说明 为什么买了服务器之后明明什么都没有配置,阿里云却会给你推送服务器的危险消息?如何解决这个问题? 原因 阿里云盾(AliYunDun),又名阿里云安骑士,是阿里云自带的云监控软件&#xff…

RTKlib操作手册--使用样例数据演示

简介 RTKLIB(Real-Time Kinematic Library)是一款开源的实时差分全球导航卫星系统(GNSS)软件库。它旨在提供高精度的位置解算,特别是在实时应用中,如精密农业、测绘、无人机导航等领域。 RTKLIB支持多种G…

Python 对象属性和类属性

本篇为Python 面向对象之对象和类属性及动态添加属性和方法的概念、示例的学习笔记。 目录 对象属性与类属性 类属性 对象属性 属性优先级 动态对象属性只针对当前对象 动态添加属性和方法 动态添加属性 动态添加方法 引入方法参数处理库 添加方法 限制动态添加属性…

目标检测数据集 - 人脸检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍:行人检测数据集,真实场景高质量图片数据,涉及场景丰富,比如校园行人、街景行人、道路行人、遮挡行人、严重遮挡行人数据;适用实际项目应用:公共场所监控场景下行人检测项目,以及作为…

如何写好年终总结?

前面有读者留言问年终总结要怎么写,我一听你要聊这个我可不困了,这活我熟啊,谁不知道我厂是 PPT 之王。先来一套打法闭环方法论,再来一套赋能抓手组合拳,如此这般,便可笑傲于江湖。 玩笑归玩笑&#xff0c…

常用界面设计组件 —— 字符串与输入输出组件(QT)

2.2 字符串与输入输出组件2.2.1 字符串与数值之间的转换2.2.2 QString的常用功能 2.2 字符串与输入输出组件 2.2.1 字符串与数值之间的转换 界面设计时使用最多的组件恐怕就是QLabel和 QLineEdit了,QLabel用于显示字符串,QLineEdit用于 显示和输入字符…

MetaGPT-打卡day01

MetaGPT是一个基于大型语言模型(LLMs)的多智能体协作框架。它利用SOP(Standard Operating Procedures,标准作业程序)来协调基于大语言模型的多智能体系统,从而实现元编程技术。该框架使用智能体模拟了一个虚…

程序员必备的面试技巧:从忍者到铁金刚的华丽转变

在科技世界的江湖中,程序员作为武林高手,面试是他们闯荡江湖的一场重要考验。在这场考验中,我们需要像忍者一样灵活,像侦探一样聪明,还要像无敌铁金刚一样坚定。本文将带你探索程序员必备的面试技巧,助你书…

ioDraw在线图表工具 - 轻松制作专业图表,只需3步!

还在花大量时间手动画图表?还在为图表样式而烦恼?ioDraw为你提供一站式解决方案!ioDraw在线图表工具实现了AI自动生成图表,让你轻松制作专业图表,只需3步! 1. 录入数据 只需将你的数据告诉ioDraw AI助手&…

最新版Navicat的安装与激活

最新版Navicat的安装与激活 图文教程链接:图文教程视频教程链接:视频教程此教程适用于Navicat161之后版本的激活,Navicat161之后的版本暂时无法通过注册机的方式进行激活,如需通过注册机激活Navicat161及之前的版本,请…

[Docker] Dockerfile

文章目录 什么是 Dockerfile?使用 Dockerfile 定制镜像开始构建镜像上下文路径 指令详解COPYADDCMDENTRYPOINTENVARGVOLUMEEXPOSEWORKDIRUSERHEALTHCHECKONBUILD 什么是 Dockerfile? Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了…

Pandas实战100例 | 案例 52: 重命名列

案例 52: 重命名列 知识点讲解 在数据处理过程中,有时需要更改 DataFrame 中的列名。Pandas 提供了 rename 方法来轻松实现列的重命名。 重命名列: 使用 rename 方法并通过 columns 参数传递一个字典,可以将旧列名映射到新列名。 示例代码 # 准备数…

Spring Boot异常处理!!!

SpringBoot默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicErrorController 来处理/error 请求,然后跳转到默认显示异常的页面…