mysql5.7之从入门到放弃

news2024/11/18 9:15:31

系列文章目录

第一章 MySQL5.7之从入门到放弃
第二章 MySQL从入门到放弃之数据库体系结构与管理
第三章 MySQL基础应用之DDL、DCL、DML、DQL
第四章 MySQL之多表连接查询、AS别名、扩展内容


文章目录

  • 系列文章目录
  • 前言
  • 一、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.coloradmin.cn/o/1384891.html

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

相关文章

SqlAlchemy使用教程(二) 入门示例及编程步骤

SqlAlchemy使用教程(一) 原理与环境搭建SqlAlchemy使用教程(三) CoreAPI访问与操作数据库详解 二、入门示例与基本编程步骤 在第一章中提到&#xff0c;Sqlalchemy提供了两套方法来访问数据库&#xff0c;由于Sqlalchemy 官方文档结构有些乱&#xff0c;对于ORM的使用步骤的描…

【生存技能】git操作

先下载git https://git-scm.com/downloads 我这里是win64&#xff0c;下载了相应的直接安装版本 64-bit Git for Windows Setup 打开git bash 设置用户名和邮箱 查看设置的配置信息 获取本地仓库 在git bash或powershell执行git init&#xff0c;初始化当前目录成为git仓库…

【Unity】【VRTK】【Pico】如何快速在VRTK中引入带动画的PICO控制器

【背景】 之前的VRTK篇章中,我只介绍了Oculus,Open VR,SImulator这三种Rig的配置方法,那么Pico如何融合VRTK进行开发呢? 【需要的开发包】 先像一个正常PICO项目那样导入PICO的SDK到Unity。VRTK 4的Package导入器中搜Pico,可以导入一个Pico的Integration,导入后Projec…

NLP论文阅读记录 - 2021 | WOS 智能树提取文本摘要深度学习

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.前提三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 An Intelligent Tree Extractive Text Summarization Deep Learning …

NAT技术的原理、和实现方式介绍

目 录 一、关于内外网的网络问题 1、内网 2、外网 3、如何实现内网访问外网 4、外网如何访问公司内部的一个服务器&#xff1f; 二、NAT技术简介 三、NAT技术的基本原理。 四、内部网实现NAT的常用方式 1.静态转换 2.动态转换 3.端口多路复用&#xff08;Por…

人工智能主流技术详解

人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是当今科技领域发展最迅速、最令人振奋的分支之一。本文将带您深入了解人工智能的主流技术&#xff0c;探索AI如何影响我们的生活、工作以及未来的发展。 一、什么是人工智能&#xff1f; 人工智能&…

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts

继续上一节的内容&#xff0c;本节学习Apache ECharts&#xff0c;实现营业额统计、用户统计、订单统计和销量排名Top10功能。 数据统计效果图&#xff1a; 目录 Apache ECharts入门案例 营业额统计用户统计订单统计销量排名Top10 Apache ECharts Apache ECharts 是一款基于 …

微信小程序(一)简单的结构及样式演示

注释很详细&#xff0c;直接上代码 涉及内容&#xff1a; view和text标签的使用类的使用flex布局水平方向上均匀分布子元素垂直居中对齐子元素字体大小文字颜色底部边框的宽和颜色 源码&#xff1a; index.wxml <view class"navs"><text class"active…

Leetcode3002. 移除后集合的最多元素数

Every day a Leetcode 题目来源&#xff1a;3002. 移除后集合的最多元素数 解法1&#xff1a;贪心 可以将数组去重后分为三个部分&#xff1a;nums1 独有的&#xff0c;nums2 独有的&#xff0c;nums1 与 nums2 共有的。 求集合 S 时&#xff1a; 先选择两个数组独有的。…

vcs makefile

主要参考&#xff1a; VCS使用Makefile教程_vcs makefile-CSDN博客https://blog.csdn.net/weixin_45243340/article/details/129255218?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170524049516800227431373%2522%252C%2522scm%2522%253A%252220140713.1301023…

强化学习应用(四):基于Q-learning的物流配送路径规划研究(提供Python代码)

一、Q-learning算法简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于马尔可夫决策过程&#xff08;MDP&#xff09;的问题。它通过学习一个值函数来指导智能体在环境中做出决策&#xff0c;以最大化累积奖励。 Q-learning算法的核心思想是使用一个Q值函数来估计每…

12AOP面向切面编程/GoF之代理模式

先看一个例子&#xff1a; 声明一个接口&#xff1a; // - * / 运算的标准接口! public interface Calculator {int add(int i, int j);int sub(int i, int j);int mul(int i, int j);int div(int i, int j); }实现该接口&#xff1a; package com.sunsplanter.prox…

c#异形窗体遮罩效果

c#异形窗体遮罩效果&#xff0c;移动&#xff0c;关闭&#xff0c;最大化&#xff0c;最小化&#xff0c;还原操作 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D…

Java 8 中的 Stream 轻松遍历树形结构

直接上代码 测试实体类 /*** Menu** author lcry*/ Data Builder public class Menu {/*** id*/public Integer id;/*** 名称*/public String name;/*** 父id &#xff0c;根节点为0*/public Integer parentId;/*** 子节点信息*/public List<Menu> childList;public Me…

浮点数的表示

文章目录 一、基本介绍二、IEEE 754标准浮点数三、浮点数的运算3.1 浮点数的加减法3.2 浮点数的乘法3.3 浮点数的除法 四、demo参考 一、基本介绍 浮点数是与定点数相对的概念&#xff0c;计算机中的定点数约定小数点的位置不变。 由于计算机字长的限制&#xff0c;当需要表示…

几种mq实现延迟队列的方式

文章目录 rocket mq&#xff1a;延时消息rabbit mq&#xff1a;死信队列kafka方案&#xff1a;多级分区举例优点 rocket mq&#xff1a;延时消息 rabbit mq&#xff1a;死信队列 消息设定一段时间未消费就进入死信队列&#xff0c;然后消费者监听死信交换机。 kafka kafka自身…

【MySQL】mysql集群

文章目录 一、mysql日志错误日志查询日志二进制日志慢查询日志redo log和undo log 二、mysql集群主从复制原理介绍配置命令 读写分离原理介绍配置命令 三、mysql分库分表垂直拆分水平拆分 一、mysql日志 MySQL日志 是记录 MySQL 数据库系统运行过程中不同事件和操作的信息的文件…

vue的element ui使用el-table组件实现懒加载树、默认自动展开层级(一层,二层)、并且解决新增、删除、修改之后树节点不刷新问题

1.整体思路 问题&#xff1a;数据量太大了&#xff0c;导致接口返回数据时间较长。解决: 将ElementUi中Table组件加载改为懒加载&#xff08;查看文档&#xff09;。思路&#xff1a;初始化打开页面时只显示第一级菜单,用户点击展开菜单之后往后端发送请求,然后加载出一级子菜…

13 | 使用代理ip爬取安居客房源信息

这是一个简单的Python爬虫代码,用于从安居客网站爬取房地产信息。该爬虫使用了代理IP来绕过可能的封禁,并提供了一些基本的信息抽取功能。 如果访问过多,那么可能出现了验证码 对此,最好的方法就是换ip。 使用代理IP的主要目的是保护爬虫的稳定性和隐私。以下是一些常见的原…

使用docker搭建LNMP架构

目录 环境准备 下载安装包 服务器环境 任务分析 nginx部分 建立工作目录 编写 Dockerfile 脚本 准备 nginx.conf 配置文件 生成镜像 创建自定义网络 启动镜像容器 验证nginx MySQL部分 建立工作目录 编写 Dockerfile 准备 my.cnf 配置文件 生成镜像 启动镜像…