mysql5.7之从入门到放弃

系列文章目录

第一章 MySQL5.7之从入门到放弃
第二章 MySQL从入门到放弃之数据库体系结构与管理
第三章 MySQL基础应用之DDL、DCL、DML、DQL


文章目录

  • 系列文章目录
  • 前言
  • 一、Mysql的介绍和安装?
    • 1、什么是数据?
    • 2、什么是数据库管理系统(DBMS)?
    • 3、数据库管理系统种类
    • 4、MySQL行业主流版本
  • 二、MySQL二进制安装
    • 1.下载安装包
    • 2.虚拟机准备操作
    • 3、上传软件包安装
    • 4、数据库初始化操作
    • 5、准备简单的my.cnf配置文件
    • 6、启动数据库及故障排查
    • 7、管理员密码设置
    • 8、本地root管理员用户密码忘记怎么整?


前言

本系列主要从mysql-5.7.26版本入手,从二进制安装、升级、sql语句学习、基础管理、日志管理等层面入手,充实运维人的数据库层面知识,在实际生产or测试环境中操作不再发抖。虽然是一名运维工程师,但是在实际的操作中,只会一些简单的增删改查语句,对数据库的了解也比较浅薄,实际处理问题都得找DBA处理,因此,为了充实一下自身的数据库运维能力,记录一下自己的提升之路。


提示:以下是本篇文章正文内容,仅供本地环境学习入门使用

一、Mysql的介绍和安装?

1、什么是数据?

	数据:文字、图片、视频等人类认知的数据表现方式,通俗点讲: 自身的个人信息就是数据
	计算机:二进制、16进制的机器语言
	基于数据的重要性和复杂性的不同,我们可能有不同的管理方式。

哪些数据是适合存储到数据库的呢?
	重要性比较高的
	关系较复杂的数据
	安全性要求高,例如:身份信息、财产信息等

2、什么是数据库管理系统(DBMS)?

	RDBMS: 关系型数据库管理系统
	比较适合于,安全级别要求高的数据以及关系较复杂的数据

	NoSQL: 非关系型数据库管理系统
	适合于高性能存取数据,一般是配合RDBMS进行使用的,例如redis、mongodb等
	针对大数据处理分析,分布式架构更加擅长

3、数据库管理系统种类

	RDBMS:
		oracle、mysql、pgsql、mssql
	NOSQL:
		redis、mongo、es
	NEWSQL:
		tidb、OB、Alisql

4、MySQL行业主流版本

  5.7
  8.0
企业版:Enterprise  , 互联网行业一般不选择.
社区版本:选择,我们自己的TOG项目使用的是5.7.32版本
源码包:source code    .tar.gz   

二、MySQL二进制安装

1.下载安装包

mysql下载地址
	https://downloads.mysql.com/archives/community/ 选择下载自己需要的版本即可

在这里插入图片描述

2.虚拟机准备操作

1、本地vmware创建一台 centos7  1c2g的虚拟机
2、添加一块20G数据盘,并将数据盘挂载到/data/目录下,具体挂载方式请看下方的脚本,执行脚本即可,挂载完成截图如下所示
	sh diskMount.sh /dev/sdb /data
3、卸载虚拟机上的mariadb
	yum -y remove mariadb*
4、创建用户mysql,使用该用户管理mysql文件及进程
	useradd -s /sbin/nologin mysql
#!/bin/env bash
DISK_DEV=$1
MOUNT_DIR=$2

function print_usage(){
 echo "Usage --  请输入两个参数:sh diskMount.sh DISK_DEV MOUNT_DIR"
 exit 2
}

if [ $# -ne 2 ]
then
 print_usage
fi

echo "创建挂载盘"
if [ -d ${MOUNT_DIR} ]
then
 read -p "磁盘已存在,请确认是否仍需挂载![Yes/No]" res
 case ${res} in
  Yes | yes | Y | y)
   echo "仍需挂载至${MOUNT_DIR}."
   ;;
  *)
   echo "no"
   exit 1
   ;;
 esac
fi

echo "分区规则,将此盘格式化为1块 xfs的盘"
parted ${DISK_DEV} "mklabel gpt"
parted ${DISK_DEV} "mkpart primary xfs 0% 100%"

echo "建立文件系统:mkfs,格式为xfs"
mkfs -t xfs  ${DISK_DEV}1
mkdir ${MOUNT_DIR}

echo "挂载..."
mount ${DISK_DEV}1 ${MOUNT_DIR}

echo "检验..."
df -h

echo "---------------------更新/etc/fstab------------------------------"
BLK_UUID=`blkid ${DISK_DEV}1 | awk -F "\"" '{print $2}'`
echo "UUID=${BLK_UUID} ${MOUNT_DIR} xfs defaults 1 2" >> /etc/fstab
cat /etc/fstab

数据盘挂载完成

3、上传软件包安装

1、上传下载好的安装包
	rz mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
2、创建安装目录、日志目录、socket文件存放目录,并对安装目录、数据目录、日志目录、socket文件存放目录授权
	mkdir  /application/
	mkdir -p /data/mysql3306/{data,log,run,binlog}
	chown -R mysql.mysql /data/*
	chown -R mysql.mysql /application/*

在这里插入图片描述

3、解压并移动到安装目录
	tar xf 	/root/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
	mv /root/mysql-5.7.26-linux-glibc2.12-x86_64  /application/mysql3306
4、设置环境变量
	vim /etc/profile
	#末尾添加一下两行配置
	export MYSQL_57_HOME=/application/mysql3306
	export PATH=$MYSQL_57_HOME/bin:$PATH
	#添加完成后保存,执行
	source /etc/profile
	/application/mysql3306/bin/mysql -V #检查版本
	/application/mysql3306/bin/mysql  Ver 14.14 Distrib 5.7.26, for linux-glibc2.12 (x86_64) using  EditLine wrapper
5、至此安装完成。。。

4、数据库初始化操作

这步操作主要是创建系统数据,主要有两种初始化方法,分别独领风骚,在初始化之前,先简单学习一下两种初始化中重要的参数

--initialize 参数:
            1、制定密码复杂度 12位、4种
            2、密码过期时间 180天
            3、给root@localhost用户设置临时密码
--initialize-insecure 参数: (通常使用该参数执行初始化即可) 
            无限制,无临时密码。
--user 参数: 指定用户
--basedir 参数: 指定安装目录
--datadir 参数: 指定数据存储目录
初始化方法一、--initialize 参数初始化
[root@python1 ~]# /application/mysql3306/bin/mysqld --initialize --user=mysql --basedir=/application/mysql3306 --datadir=/data/mysql3306/data
 	  2024-01-13T03:41:28.957287Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
      2024-01-13T03:41:29.155188Z 0 [Warning] InnoDB: New log files created, LSN=45790
      2024-01-13T03:41:29.199881Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
      2024-01-13T03:41:29.271144Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: a2c759a2-b1c5-11ee-b350-00505631e679.
      2024-01-13T03:41:29.271946Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
      2024-01-13T03:41:29.272634Z 1 [Note] A temporary password is generated for root@localhost: y&h2dsziiR0h --->重点关注此行即可 该密码就是第一次登录数据库时使用的密码
初始化方法二、--initialize-insecure 参数初始化
[root@python1 ~]#  /application/mysql3306/bin/mysqld --initialize-insecure --user=mysql --basedir=/application/mysql3306 --datadir=/data/mysql3306/data

5、准备简单的my.cnf配置文件

初始化配置文件作用:
            影响数据库的启动
            影响客户端的功能
      
配置文件书写格式
            [标签]
            xx=xx
      
配置文件标签归类
            服务端
                  [mysqld]
                  [mysqld_safe]
                  [server]
            客户端
                  [client]
                  [mysql]
                  [mysqladmin]
                  [mysqldump]
                  
mysql启动时读取配置文件顺序
[root@db01 ~]# mysqld --help --verbose |grep my.cnf
            /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf /application/mysql3306/my.cnf ~/.my.cnf 
           注意:
                  --defaults-file 参数可以强制使用自定义配置文件
 	vim /application/mysql3306/my.cnf
      [mysqld]
      user=mysql
      basedir=/application/mysql3306
      datadir=/data/mysql3306/data
      socket=/data/mysql3306/run/mysql.sock
      server_id=6
      port=3306
      log_error_verbosity         = 3
	  log_error                   = /data/mysql3306/log/mysqld-err.log
	  log_timestamps              = SYSTEM
	  log-bin                     = /data/mysql3306/binlog/mysql-bin
      [mysql]
      socket=/data/mysql3306/run/mysql.sock

6、启动数据库及故障排查

启动数据库有两种方式,一种是基于centos 6 的service命令管理,一种是基于centos 7的systemctl命令管理,下面是两种方式的介绍

方法一、基于centos 6 的service命令管理
[root@python1 mysql]# cp /application/mysql3306/support-files/mysql.server /etc/init.d/mysql_3306.server
[root@python1 mysql]# service mysql_3306 restart
[root@python1 mysql]# /etc/init.d/mysql_3306.server start
因为指定了socket、日志等文件位置,且my.cnf配置文件并没有采用默认的/etc/my.cnf路径,所以要修改/etc/init.d/mysql_3306.server启动脚本,
添加如下所示:
	user=mysql
	basedir=/application/mysql3306
	bindir=$basedir/bin
	datadir=/data/mysql3306/data
	mycnf=$datadir/my.cnf
方法二、基于centos 7的systemctl命令管理
	cat /etc/systemd/system/mysql_3306.service
            [Unit]
            Description=Mysql server
            After=syslog.target
            After=network.target

            [Service]
            User=mysql
            Group=mysql
            LimitNOFILE=102400
            ExecStart=/application/mysql3306/bin/mysqld --defaults-file=/application/mysql3306/my.cnf

            [Install]
            WantedBy=multi-user.target
#启动mysql
[root@python1 mysql]# systemctl start mysql_3306

 #检查进程
[root@python1 mysql]# ps -ef |grep mysql
mysql      7696      1  1 12:17 ?     00:00:00 /application/mysql3306/bin/mysqld --defaults-file=/application/mysql3306/my.cnf

 #登录mysql
[root@python1 mysql]#  /application/mysql3306/bin/mysql -S /data/mysql3306/run/mysql.sock
启动故障排查
	查看日志文件
           配置了日志文件再数据路径下,日志文件名是 <mysqld-err.log>,如下截图所示

在这里插入图片描述

7、管理员密码设置

因为前面的操作只是初始化了数据库,并没有给数据库创建对应的管理员用户,因此执行mysql命令直接可以登录到数据库中,不符合安全及学习之路,所以必须配置管理用户

[root@python1 ~]# mysqladmin -uroot -p password test123 -S /data/mysql3306/run/mysql.sock  <设定密码为test123>
			      Enter password: <此处直接回车就行,因为原来没有密码,如果原来有密码,则需要输入老密码>
			      mysqladmin: [Warning] Using a password on the command line interface can be insecure.
			      Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

8、本地root管理员用户密码忘记怎么整?

实际环境中,出现该现象的概率基本是零,此处为了学习做一个演示,忽略即可。生产环境不要直接随意启停数据库

1、关闭数据库
      systemctl stop mysql_3306
            
2、启动数据库维护模式
       --skip-grant-tables 跳过授权表
       --skip-networking   跳过远程登录
3、执行 
	[root@python1 ~]# /application/mysql3306/bin/mysqld_safe --skip-grant-tables --skip-networking &
                [1] 13385
    [root@python1 ~]# 2024-01-13T04:52:40.873713Z mysqld_safe Logging to '/data/mysql3306/data/python1.err'.2024-01-13T04:52:40.904620Z mysqld_safe Starting mysqld daemon with databases from /data/mysql3306/data
3、登录数据库并修改密码
      mysql> select user,host,authentication_string from mysql.user;
                  +---------------+-----------+-------------------------------------------+
                  | user          | host      | authentication_string                     |
                  +---------------+-----------+-------------------------------------------+
                  | root          | localhost | *676243218923905CF94CB52A3C9D3EB30CE8E20D |
                  | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
                  | mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
                  +---------------+-----------+-------------------------------------------+
                  3 rows in set (0.00 sec)

       mysql> flush privileges; #刷新权限,要不然执行会报错
                  Query OK, 0 rows affected (0.01 sec)

       mysql> alter user root@'localhost' identified by '123'; #修改密码
                  Query OK, 0 rows affected (0.00 sec)
 
       mysql> select user,host,authentication_string from mysql.user; #跟上述查出来的密码字符串对比明显发生了改变
                  +---------------+-----------+-------------------------------------------+
                  | user          | host      | authentication_string                     |
                  +---------------+-----------+-------------------------------------------+
                  | root          | localhost | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
                  | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
                  | mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
                  +---------------+-----------+-------------------------------------------+
                  3 rows in set (0.01 sec)
    4、 重启数据库登录验证即可,如下图所示

在这里插入图片描述


以上仅供参考

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于深度学习的老照片修复系统

技术栈 深度学习 pytorch tensorflow python 卷积神经 神经网络 照片修复 vue 老照片修复 扫描褪色 残损照片或胶片 调整暗调/高光以改善面效果 修正曝光斑痕 背景&#xff1a; 随着时间的流逝&#xff0c;许多老照片可能会褪色、损坏或曝光不当。这些老照片记录了宝贵的回忆…

如何在Windows 11的桌面中添加此电脑图标,这里提供四种方法

将“此电脑”图标添加到Windows 11桌面,使文件更容易访问。虽然Window的11酷设计从一开始就没有包含这个图标,但没必要担心。取回它很容易。你可以通过“设置”菜单、快捷方式或使用“控制面板”再次返回。有几种方法可以恢复此图标。 在这篇文章中,我们将探讨不同的方法,…

Windows下使用clion调试LevelDB与rocksdb

目录 关于leveldb下载leveldb源码增加测试文件更新cmake文件运行 关于RocksDB下载RocksDB代码修改CMakelist.txt运行 参考资料&#xff1a; 关于leveldb 下载leveldb源码 链接: leveldbGit地址 增加测试文件 使用clion打开项目&#xff0c;在根目录下新建一个app目录&#…

超详细的嵌入式cJSON使用注意事项,持续补充中......

文章目录 一、堆内存不足1.1 问题描述1.2 解决办法 二、内存泄露2.1 忘记Delete2.2 忘记Free2.3 串口数据接收缺少部分字符导致的内存泄露(自己的问题)问题分析 2.4 内存泄露在Cortex-M3内核会发生什么&#xff1f; cJSON开源库地址&#xff1a; cJSON 一、堆内存不足 1.1 问…

第十二讲 单片机驱动彩色液晶屏 如何打包bin档

单片机驱动TFT彩色液晶屏系列讲座 目录 第一讲 单片机最小系统STM32F103C6T6通过RA8889驱动彩色液晶屏播放视频 第二讲 单片机最小系统STM32F103C6T6控制RA8889驱动彩色液晶屏硬件框架 第三讲 单片机驱动彩色液晶屏 控制RA8889软件:如何初始化 第四讲 单片机驱动彩色液晶屏 控…

Python-- if...else

在 Python 中&#xff0c;if 语句是用来进行条件判断的基本结构。它允许您根据一个或多个条件的真假来执行不同的代码块。Python 的 if 语句的基本语法如下&#xff1a; if condition:# do something elif another_condition:# do something else else:# do something if none…

【Linux】线程池实现

&#x1f4d7;线程池实现&#xff08;单例模式&#xff09; 1️⃣线程池概念2️⃣线程池代码样例3️⃣部分问题与细节&#x1f538;类成员函数参数列表中隐含的this指针&#x1f538;单例模式&#x1f538;一个失误导致的bug 4️⃣调用线程池完成任务 1️⃣线程池概念 线程池是…

C#,求最长回文字符串的马拉车(Manacher)算法的源代码

一、回文字符串&#xff08;Palindromic String&#xff09; 回文字符串&#xff08;Palindromic String&#xff09;是指前、后向读起来完全相同的字符串。 回文字符串除了答题似乎没有什么用处 :P 二、求解思路 求解字符串的回文子串的基本思路&#xff1a; 1、遍历每个位…

C# 图解教程 第5版 —— 第25章 反射和特性

文章目录 25.1 元数据和反射25.2 Type 类25.3 获取 Type 对象25.4 什么是特性25.5 应用特性25.6 预定义的保留特性25.6.1 Obsolete 特性25.6.2 Conditional 特性25.6.3 调用者信息特性25.6.4 DebuggerStepThrough 特性25.6.5 其他预定义特性 25.7 关于应用特性的更多内容25.7.1…

springboot怎样设置全局的traceId(包括MQ)

一、Controller打印TraceId 1、拦截所有的controller&#xff0c;输入输出将traceId放入MDC中&#xff1a; package com.perkins.ebicycle.mobile.trace;import java.util.Arrays; import java.util.List; import java.util.UUID; import java.util.stream.Collectors;import…

深思熟虑可能性模型介绍与使用

深思熟虑可能性模型介绍与使用 如何联系我 作者&#xff1a;鲁伟林 邮箱&#xff1a;thinking_fioa163.com或vlinyes163.com 版权声明&#xff1a;文章和记录为个人所有&#xff0c;如果转载或个人学习&#xff0c;需注明出处&#xff0c;不得用于商业盈利行为。 背景 20…

操作系统详解(5.1)——信号(Signal)的相关题目

系列文章&#xff1a; 操作系统详解(1)——操作系统的作用 操作系统详解(2)——异常处理(Exception) 操作系统详解(3)——进程、并发和并行 操作系统详解(4)——进程控制(fork, waitpid, sleep, execve) 操作系统详解(5)——信号(Signal) 文章目录 题目第一问第二问第三问 题目…

ES搜索的安装以及常用的增删改查操作(已经写好json文件,可以直接使用)

1.es的下载 https://www.elastic.co/cn/downloads/past-releases 2.elasticsearch安装及配置&#xff0c;遇到9200访问不了以及中文乱码&#xff0c;能访问了却要账户密码等问题 Elasticsearch启动后访问9200失败_http://localhost:9200无返回值-CSDN博客 3.开启es服务&#x…

Qat++,轻量级开源C++ Web框架

目录 一.简介 二.编译Oat 1.环境 2.编译/安装 三.试用 1.创建一个 CMake 项目 2.自定义客户端请求响应 3.将请求Router到服务器 4.用浏览器验证 一.简介 Oat是一个面向C的现代Web框架 官网地址&#xff1a;https://oatpp.io github地址&#xff1a;https://github.co…

Error: L6218E: Undefined symbol 系列错误汇总 (referred from main.o)

传送门 错误1&#xff1a; Undefined symbol(referred from main.o)错误2&#xff1a;Undefined_symbol _use_two_region memory 错误1&#xff1a; Undefined symbol(referred from main.o) Cube_GPIO\Cube_GPIO.axf: Error: L6218E: Undefined symbol LED_GPIO_Init (referr…

15个为你的品牌增加曝光的维基百科推广方法-华媒舍

维基百科是全球最大的免费在线百科全书&#xff0c;拥有庞大的用户群体和高质量的内容。在如今竞争激烈的市场中&#xff0c;利用维基百科推广品牌和增加曝光度已成为许多企业的重要策略。本文将介绍15种方法&#xff0c;帮助你有效地利用维基百科推广品牌&#xff0c;提升曝光…

GPT编程:运行第一个聊天程序

环境搭建 很多机器学习框架和类库都是使用Python编写的&#xff0c;OpenAI提供的很多例子也是Python编写的&#xff0c;所以为了方便学习&#xff0c;我们这个教程也使用Python。 Python环境搭建 Python环境搭建有很多种方法&#xff0c;我们这里需要使用 Python 3.10 的环境…

浅谈对Mybatis的理解

一、Mybatis的概述 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code&#xff0c;由谷歌托管&#xff0c;并且改名为MyBatis 。2013年11月迁移到Github。 MyBatis是支持普通SQL查询&#xff0c;存储过程和高级映射的优…

ssm基于Web的课堂管理系统设计与实现论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

数据库(1)

目录 1.什么是数据库 1.1.数据 1.2.数据库 1.3 常见数据库 1.3.1 关系型数据库 1.3.2 非关系型数据库 2.mysql概述 ​编辑 **3.MySQL本地仓库安装 在Linux端操作 4.MySQL网络安装 **方法一&#xff1a;RPM捆绑包 下载安装RPM捆绑包&#xff1a; 在windows端操作&a…
最新文章