当前位置: 首页 > news >正文

MySQl基础----Linux下搭建mysql软件及登录和基本使用(附实操图超简单一看就会)

绪论​
涓滴之水可磨损大石,不是由于他力量强大,而是由于昼夜不舍地滴坠。 只有勤奋不懈地努力,才能够获得那些技巧。 ——贝多芬。新开MySQL篇章,本章非常基础包括如何在Linux上搭建(当然上面的SQL语句你在其他能执行SQL语句的软件上也能正常执行,并非一定要在Linux环境下)和mysql的基本使用,但同时需要一定的Linux基础,所以假若你没学习过Linux建议查看我的Linux专栏来巩固一定的Linux知识。我将持续更新期待你的关注。
在这里插入图片描述
话不多说安全带系好,发车啦(建议电脑观看)。

思维导图:

请添加图片描述


1.清理陈旧环境

在这里插入图片描述

  1. 查看mysql安装包,若有则删除
查看:
rpm -qa | grep mysql

在这里插入图片描述

删除:
rpm -qa | grep mysql | xargs yum -y remove #xargs卸载程序

在这里插入图片描述

  1. 查看是否存在mysql的配置文件 /etc/my.cnf 若有就需要再删除该文件
    在这里插入图片描述
    一般mysql的数据会放到 /var/lib/mysql/ 中,当删除了mysql后数据仍然可能会存在(可保留不删除)
    在这里插入图片描述

2.获取更新mysql官方yum源并实现安装

  1. 查看自身系统版本:
cat /etc/redhat-release

在这里插入图片描述

  1. 获取匹配自身版本的MySQL安装包

访问MySQL开发者专区:https://dev.mysql.com/downloads/repo/yum/(附:可能需要注册oracle,自行注册登录下即可)
选择匹配的mysql版本下载即可,centos7可选:
在这里插入图片描述
mysql80-community-release-el7-1.noarch.rpm,其中:mysql80: MySQL版本号,默认是MySQL8.0版本;el7 : 其中el 是 Enterprise Linux的编写,7表⽰ Linux⼤版本号,⽐如el6 表⽰ Linux6, el7表⽰Linux7, e8表⽰Linux8, el9表⽰Linux9,;‘fc’ 则表⽰ Fedora;el7-1:表⽰MySQL仓库配置RPM包的第1次更新

  1. 将下载好的mysql的rpm安装包上传到Linux中

通过rz指令将本地文件上传到Linux服务器中
在这里插入图片描述
附:若没有rz软件则先安装:

yum install -y lrzsz
  1. 更新mysql到yum安装列表中

查看yum源安装列表:ls /etc/yum.repos.d/
下图一开始没有mysql,也就无法安装,所以需要rpm指令让mysql安装包放进安装列表中去使能够被yum安装

rpm指令:
rpm -ivh 下载好的mysql rpm安装包
rpm -ivh mysql84-community-release-el7-1.noarch.rpm

在这里插入图片描述
当执行指令后,再次查看安装列表就多了mysql的(上图最后一个框)

  1. 开始安装

正常yum直接安装:

yum install -y mysql-community-server

查看是否成功的方法查看下述文件和程序是否存在:
在这里插入图片描述

3.启动mysql

语法:

systemctl start mysqld

查看是否启动mysql进程(mysqld使mysql的服务端):

ps ajx | grep mysqld

在这里插入图片描述

4.常规登录

登录语法:

mysql -uroot -p

此时发现需要输密码:
⾸次安装成功,密码可能为以下几种情况:

  1. MySQL把root⽤⼾的默认密码保存在错误⽇志中
    通过日志查看密码:
grep 'temporary password' /var/log/mysqld.log

就能查看到密码:
在这里插入图片描述
所以输入密码就登录上了(此处输入密码同样是不显的)
在这里插入图片描述

4.1登录进去mysql后要先修改成自己的密码:

对于validate_password组件是默认安装的,实现的默认密码策略,要求密码⾄少包含1个⼤写字⺟、1个⼩写字⺟、1个数字和1个特殊字符,密码总⻓度⾄少为8个字符。
设置密码语法:

ALTER USER 'root'@'localhost' IDENTIFIED BY '输入自己的密码';

4.2若想设置成简单的密码:

默认密码策略:密码策略分为 LOW 、 MEDIUM (默认)和 STRONG ,分别⽤0,1(默认),2表⽰。0表⽰只校验密码⻓度,⻓度最⼩为8,所以以后要设置简单密码时还需要修改密码的⻓度限制。他们分别⽤两个系统变量validate-password.policy和validate_password.length表⽰。

例:如果我们要在开发环境设置如123456的简单密码那么就要修改默认密码策略,我们只需要设置:

  1. validate-password.policy为LOW
  2. validate_password.length为小于所需长度的值即可

具体如:

show variables like 'validate_password.policy'; #查看密码策略show variables like 'validate_password.length'; #查看当前密码⻓度限制
set global validate_password.policy=0; #策略设置为LOWset global validate_password.length=4; #密码⻓度最少为4位(系统限制不能⼩于4位)

在修改密码为’123456’即可成功

  1. 若不存在日志的话:可能是不用输入密码直接回车就能直接登录进去

  2. 倘若还不行就修改mysql的配置文件:

vim /etc/my.cnf #打开mysql配置文件
#在最后一栏配置加入选项:
skip-grand-tables #跳过密码认证

如下:
在这里插入图片描述
重启mysql服务,让配置文件生效:

systemctl restart mysqld #重启
#或者先关闭在开启
systemctl stop mysqld
systemctl start mysqld
# 再打开就直接回车即可进入
mysql -uroot -p #-u后面加用户

5.mysql的配置文件

同样在 /etc/my.cnf文件中设置
添加如下选项(设置端口、编码方式和引擎):
在这里插入图片描述
附:还能设置能开机启动:

systemctl enable mysqld
systemctl daemon-reload

6.连接服务器具体操作:

mysql -h 127.0.0.1 -P 3306 -u root -p
-h:指明登录部署了mysql的服务主机
-P:指明访问的端口
-u:指明登录用户
-p:指明要输入密码

7.数据库基础

  1. mysql是数据库服务的客户端
  2. mysqld是数据库服务的服务器端
  3. mysql本质:基于C(mysql)S(mysqld)模式的一种网络服务
  4. mysql是一套给我们提供数据存取的服务的网络程序
  5. 数据库一般指的是,在磁盘/内存中存储的特定结构组织的数据,将来在磁盘上存储的一套数据库方案
  6. 理解数据库服务端mysqld、数据库客户端mysql以及底层文件的关系:
    在这里插入图片描述
    一般的文件确实提供了数据的存储功能,但是文件并没有提供非常好的数据管理能力,所以需要一套管理文件的程序,这样我们程序员使用时就能更加快捷的管理好内部存储的数据!
  7. 数据库本质:对数据内容存储的一套解决方案,你给我字段或者要求,数据库直接给出想要的结果。

8.mysql的基础使用

  1. 建立数据库和查看数据库:
create database helloworld; #创建数据库:create database 数据库名show databases;#查看已存在的数据库,一般会默认存在些 

附:建立数据库,本质就是创建一个文件
在这里插入图片描述

  1. 表格的创建和插入的数据
    在库中存储的数据是以表格的形式存储的,要创建表就得先使用(进入)到数据库中,才能初始化创建表格样式,最后插入数据到表格中。
use helloworld; #使用表create table student( #创建初始表格
name varchar(32),
age int,
gender varchar(2)
);show tables;#查看创建好的表insert into student(name,age,gender) value('张三',20,'男'); #插入数据到表格中:select * from student;#查看表的内容

在这里插入图片描述
在这里插入图片描述
附:在数据库库中创建表格也就相当于Linux下创建一个文件(mysqld服务端执行的)!
在这里插入图片描述
3. 对此mysql帮我们解决了:程序员就不用再去关心数据文件了,只用去想要对文件做什么,然后通过mysql完成即可。
在这里插入图片描述

附:mysql的数据是按逻辑存储的,通过行列的方式来存储数据的(二维结构),按行进行插入。

9.主流数据库:

  • SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
  • Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
  • MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
  • PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
  • SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
  • H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

服务器、数据库、表的关系相当于下图:
在这里插入图片描述

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。

10.MySQL架构

在这里插入图片描述
大致分为三层

  1. 上图在MySQL Server中connection pool用于链接,将所写的SQL语句和底层连接起来。
  2. 再connection pool下面的四个框其本质就是用来解释以及优化所写的SQL语句(类似于编译器)。
  3. 再下面Pluggable Storage Engines是各种存储引擎其作用是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法(类似于计算机中的驱动)。

11.SQL分类

  • DDL:DDL【data definition language】 数据定义语言,用来维护存储数据的结构,代表指令: create, drop, alter
  • DML【data manipulation language】 数据操纵语言,用来对数据进行操作代表指令: insert,delete,update
  • DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务,代表指令: grant,revoke,commit
    DDL可以理解为库、表结构的操作,而DML就是结构体内的操作(理解成对库、表内部数据的操作!)

12.存储引擎

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
Mysql的核心就是插件时的存储引擎,它是支持各种存储引擎的。
查看能使用的所有存储引擎语法:

show engines \G;

在这里插入图片描述


本章完。预知后事如何,暂听下回分解。

如果有任何问题欢迎讨论哈!

如果觉得这篇文章对你有所帮助的话点点赞吧!

持续更新大量MySQL细致内容,早关注不迷路。

相关文章:

MySQl基础----Linux下搭建mysql软件及登录和基本使用(附实操图超简单一看就会)

绪论​ 涓滴之水可磨损大石,不是由于他力量强大,而是由于昼夜不舍地滴坠。 只有勤奋不懈地努力,才能够获得那些技巧。 ——贝多芬。新开MySQL篇章,本章非常基础包括如何在Linux上搭建(当然上面的SQL语句你在其他能执行…...

PostgreSQL17优化器改进(4)允许UNION(没有ALL)使用MergeAppend

PostgreSQL17优化器改进(4)允许UNION(没有ALL)使用MergeAppend UNION存在的问题 到PostgreSQL16.3版本为止,UNION执行计划通常不是最优的,优化器有两种处理方法: 优化器只考虑使用Append节点并通过使用Hash Aggregate,Append -…...

SSM 基于大数据技术的创业推荐系统-计算机毕业设计源码02979

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作…...

基于WPF技术的换热站智能监控系统03--实现左侧加载动画

1、左侧布局规划 左侧分5行,每行的高度通过height属性来指定,1.2*表示占1.2倍的宽度 2、创建用户控件 在WPF中想要进行个性化处理,主要可以通过三个方面来实现:控件模板(控件模板、数据模板、数据容器模板&#xff09…...

4D毫米波雷达技术及发展

文章目录 前言一、4D毫米波雷达是什么?二、毫米波雷达是什么?毫米波雷达的基本原理多普勒效应 前言 现阶段自动驾驶技术中,主要用到的传感器有摄像头、激光雷达和毫米波雷达。 摄像头的光谱从可见光到红外光谱,是最接近人眼的传感…...

请解释Java Web应用的开发流程,包括前后端分离和交互方式。请解释Java中的锁分离技术,并讨论其在提高并发性能方面的作用。

请解释Java Web应用的开发流程,包括前后端分离和交互方式。 Java Web应用的开发流程是一个涵盖多个阶段的过程,这些阶段从需求分析开始,经过设计、编码、测试,最终到部署和维护。在这个过程中,前后端分离成为现代Web应…...

selenium使用已经打开的浏览器

Selenium 本身不支持直接连接到一个已经打开的浏览器页面。Selenium 启动的浏览器实例是一个全新的会话,它与手动打开的浏览器页面是分开的。但是,有一些变通的方法可以实现类似的效果。 一种方法是通过附加代理连接到已经打开的浏览器。下面是如何实现…...

Redis: 深入解析高性能内存数据库的实现原理

一、Redis简介 Redis是一种基于内存的键值存储数据库,支持丰富的数据类型,如字符串、列表、集合、有序集合和哈希表。它不仅具有极高的性能,还支持数据持久化、主从复制和分布式架构,使其在各种应用场景中表现出色。 1.1 Redis的…...

使用 Python进行自动备份文件

文件备份对数据保护至关重要,让我们使用 shutil 模块创建一个简单的备份脚本 这段代码的作用就是将指定源目录中的所有文件备份到目标备份目录中,并在备份目录中创建带有时间戳的子目录,通过定期运行这段代码,可以实现自动备份文…...

02_01_SpringMVC初识

一、回顾MVC三层架构 1、什么是MVC三层 MVC是 模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。主要作用是降低视图与业务逻辑之间的双向耦合,它不是一种…...

Python学习打卡:day04

day4 笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了 目录 day428、while 循环的嵌套应用29、while 循环案例 — 九九乘法表补充知识示例:九九乘法表 30、for 循环基本语法while 和 for 循环对比f…...

gitlab问题记录

You wont be able to pull or push project code via SSH until you add an SSH key to you 解决方案:https://blog.csdn.net/gufenchen/article/details/95663284...

OpenCV练习(1)签名修复

1.目的 在学校的学习过程中,需要递交许多材料,且每份材料上都需要对应负责人签名,有时候找别人要签名,然后自己粘贴的话,会出现签名模糊,背景不是纯白透明。为此以word中的“颜色校正”功能为参照&#xf…...

软设之系统测试之测试的基本概念及分类

测试的基本概念 尽早,不断地进行测试 程序员避免测试自己设计的程序 既要选择有效,合理的数据,也要选择无效,不合理的数据 修改后应进行回归测试 尚未发现的错误数量与该程序已发现错误其他成正比。 动态测试 黑盒测试(测试…...

Python学习打卡:day06

day6 笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了 目录 day648、函数综合案例49、数据容器入门50、列表的定义语法51、列表的下标索引1、列表的下标(索引)2、列表的下标&#xff08…...

支付宝 沙盒demo使用

简介:支付宝沙箱环境是一个为开发者提供的模拟测试环境,用于在应用上线前进行接口功能开发和联调。在这个环境中,开发者可以模拟开放接口,进行开发调试工作,以确保应用上线后能顺利运行。 1. 配置沙盒 1. 1 沙箱控制…...

ConcurrentHashMap如何保证线程安全?

ConcurrentHashMap 是 HashMap 的多线程版本,HashMap 在并发操作时会有各种问题,比如死循环问题、数据覆盖等问题。而这些问题,只要使用 ConcurrentHashMap 就可以完美解决了,那问题来了,ConcurrentHashMap 是如何保证…...

spring属性注入的不细心错误

属性注入问题 个人博客:www.zgtsky.top 同个的对象,在一个类中注入成功,在另一个类中注入为null 问题:在检测各个需要的类上已经打上注解后,出现了在一个类A1中注入B属性成功了,但在另一个类A2中注入B属性却失败了。…...

JVM 根可达算法

Java中的垃圾 Java中"垃圾"通常指的是不再被程序使用和引用的对象,具体表现在没有被栈、JNI指针和永久代对象所引用的对象。Java作为一种面向对象的编程语言,它使用自动内存管理机制,其中垃圾收集器负责检测和回收不再被程序引用的…...

Kafka基础架构与核心概念?有哪些应用场景?

Kafka简介 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。架构特点是分区、多副本、多生产者、多订阅者,性能特点主要是高吞吐,低时延。 Kafka主要设计…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...