[ MySQL ] — 数据库环境安装、概念和基本使用

news2024/11/15 8:00:57

目录

安装MySQL 

获取mysql官⽅yum源

安装mysql yum 源

安装mysql服务

启动服务

 登录

方法1:获取临时root密码

方法2:无密码

方法3:跳过密码认证

配置my.cnf

卸载环境

设置开机启动(可以不设)

常见问题

安装遇到秘钥过期的问题:

概念

什么是数据库?

主流数据库

基本使用

连接服务器

查看当前MySQL的数据库列表

创建数据库

使用数据库

创建数据库表

向表中插入数据

查询表中的所有数据 

服务器,数据库,表关系

 MySQL架构

 SQL分类

存储引擎

查看存储引擎

存储引擎对比


安装MySQL 

安装与卸载中,用户全部切换成为root,否则权限不够。

获取mysql官⽅yum源

获取mysql官⽅yum源 : Index of /232905 (mysql.com)

查看自己的系统版本:cat /etc/redhat-release

 找⼀下和自己版本⼀致的资源,下载到你的本地,然后上传到你的Linux服务器。如果觉得该网页看不清版本,可以单机鼠标右键,点击查看网页源代码。常用的就是5.7版本的,可以在5.7版本下找一找有没有符合自己机器版本的。这里没有7.6所以我下载的是标红的版本。

下载完成后找到文件(建议把文件移动到桌面上,好找!),在Linux机器上使用rz指令把它上传到机器上,也可以直接拖拽。把文件上传到一个新目录下,如下图,我们就可以看到安装包了。


安装mysql yum 源

查看你本地的yum源:ls /etc/yum.repos.d/ -l 

 看看你的系统里有没有mysql相关的yum源,我这里也是没有的。

 安装 yum 源 : rpm -ivh yum源文件

 安装后就有了mysql的 yum源了(如果安装出错了,看看是不是权限不够,可以转换成root用户或sudo)。

看看yum源能否正常工作: yum list | grep mysql

内容太多就不演示了。

注:安装上了以后安装包就可以删掉了,不删也没问题。


安装mysql服务

安装指令: yum install -y mysql-community-server

怎么判断自己是否安装成功了呢?

用下面三个指令验证:

ls /etc.mycnf 

which mysqld 

which mysql 


启动服务

启动 :systemctl start mysqld.service

 如下图,可以发现服务就启动起来了。


 登录

指令:mysql -uroot -p

 但是发现要密码,我们没有密码怎么办呢?别着急接着往下看。

方法1:获取临时root密码

指令:grep 'temporary password' /var/log/mysqld.log

 使用临时密码进行登录,然后修改密码。

 查看密码等级:show variables like '%validate_password%';    

 更改密码等级为low,低等级:set global validate_password_policy=0;      

更改密码长度为6:set global validate_password_length=6;    

修改本地登录密码,暂不授权远程登录:

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

FLUSH PRIVILEGES;


 

方法2:无密码

如果你安装的最新的mysql,没有所谓的临时密码,root默认没有密码,试着直接登陆⼀下。

方法3:跳过密码认证

使用指令打开mysql配置⽂件: vim /etc/my.cnf

在[mysqld]最后⼀栏配置(不知道是什么的,就放在配置⽂件最后) 添加:skip-grant-tables 选项

重启mysql服务 #  systemctl restart mysqld 

一定要先重启mysql服务再登录!

此时就可以登录了,可以直接把-p去掉 直接使用 mysql -uroot 登录,也可以不去掉-p ,在输入密码那里,直接回车即可。


配置my.cnf

主要是设置 数据库客⼾端和服务器的默认编码格式。

使用指令打开mysql配置⽂件: vim /etc/my.cnf

将这三个写入文件中

port=3306
character-set-server=utf8
default-storage-engine=innodb

配置完毕,重启mysql即可。重启mysql服务 #  systemctl restart mysqld 


卸载环境

如果有安装不合适的环境可以进行卸载

先检查是否有mariadb存在: # ps ajx |grep mariadb

如果有,需要先停⽌mariadb 服务 :# systemctl stop mariadb.service

或者检查是否有mysqld运行: # ps ajx |grep mysql

停止mysql 服务 :# systemctl stop mysqld

检查系统安装包

rpm -qa | grep mariadb 或   rpm -qa | grep mysql

卸载安装包:yum remove mysql (自己手动一个一个卸载) 

或  rpm -qa | grep mysql | xargs yum -y remove (把查询到的mysql安装包 全部卸载)

我这里就不卸载了,卸载mariadb也是一样的。


设置开机启动(可以不设)

使用云服务器的可以不设,因为云服务器基本不关机。

#设置开启开机⾃启动
systemctl enable mysqld
systemctl daemon-reload


常见问题

安装遇到秘钥过期的问题:

Failing package is: mysql-community-client-5.7.39-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
解决⽅案:更新一下秘钥

命令行# rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022



 

概念

什么是数据库?

MySQL是一套提供数据存取的服务的网络程序。

MySQL的本质基于C(mysql)S(mysqld)模式的一种网络服务。

mysql  :是数据库的客户端;

mysqld:是数据库的服务端(一般一个可执行程序带d的,我们叫它守护进程)。

这个数据库一般指的是在磁盘或内存中存储的特定结构组织的数据,也就是说这是一种将来在磁盘上存储的一套数据库的方案。

数据库服务特指-mysqld。

存储数据用文件就可以了,为什么还要弄个数据库呢?

因为文件保存数据有以下几个缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便

为了解决这些问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标。

主流数据库

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

基本使用

连接服务器

 平时在本地主机也可以省略掉 -h 和 -P。

 注:

  • 如果没有写 -h 127.0.0.1 默认是连接本地;
  • 如果没有写 -P 端口号 默认是连接3306端口号。

查看当前MySQL的数据库列表

show databases;

数据库默认存放在 /var/lib/mysql目录下

创建数据库

create database 数据库名称;

 

 创建数据库本质就是在Linux下创建的一个目录。

使用数据库

use 数据库名称;

创建数据库表

create table 表名称(表内容);

 创建数据库表本质就是在Linux下创建的一个文件。

向表中插入数据

查询表中的所有数据 

select * from 表名称;

数据库本质也是文件!只不过这些文件不由程序员直接操作,而是数据库服务帮我们进行操作。 

服务器,数据库,表关系

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

数据库服务器、数据库和表的关系如下:

 MySQL架构

        MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。

 SQL分类

  • DDL【data definition language】 数据定义语言,用来维护存储数据的结构

        代表指令: create, drop, alter

  • DML【data manipulation language】 数据操纵语言,用来对数据进行操作

        代表指令: insert,delete,update

  • DML中又单独分了一个DQL,数据查询语言,代表指令: select
  • DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务

        代表指令: grant,revoke,commit

存储引擎

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。

MySQL的核心就是插件式存储引擎,支持多种存储引擎。

查看存储引擎

show engines;

存储引擎对比

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

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

相关文章

C语言阶段性测试题

大家好,我是深鱼~ 【前言】:本部分是C语言初阶学完阶段性测试题,最后一道编程题有一定的难度,需要多去揣摩,代码敲多了,自然就感觉不难了,加油,铁汁们!!&…

2023-08-05——JVM 栈

栈 stack 栈:数据结构 程序数据结构算法 栈:先进后出,后进先出 好比一个:桶 队列:先进先出(FIFO :First Input First Out) 好比一个:管道 栈:喝多了吐。队列…

Qt 信号与槽

信号与槽(signal & slot)是Qt编程的基础,使Qt中处理界面各个组件的交互操作变得更加直观和简单。 信号(Signal)就是在特定情况下被发射的事件,如PushButton最常见的信号就是鼠标单击时发射的clicked()…

K8S系列文章之 服务部署核心概念

主要讲述如何在K8s中部署应用。 首先,我们在实战项目中经常会用到的一些概念 PodDeploymentServiceNamespacesDNS 使用上一篇文章,我们重建Kind K8s环境,并部署一个可以从本地访问的简单网页,加深理解。 环境(配置) centos7Doc…

LeetCode-Java(05)

19. 删除链表的倒数第 N 个结点 两个方法,方法一是先走一遍链表得出链表长度,再走第二遍,找到倒数第n个数。方法二是双指针,首先快指针就比慢指针多走n步,然后这俩指针同步走,快指针走到头了,慢…

Linux从安装到实战 常用命令 Bash常用功能 用户和组管理

1.0初识Linux 1.1虚拟机介绍 1.2VMware Workstation虚拟化软件 下载CentOS; 1.3远程链接Linux系统 &FinalShell 链接finalshell半天没连接进去 他说ip adress 看IP地址是在虚拟机上 win11主机是 终端输入: ifconfig VMware虚拟机的设置 & ssh连接_snge…

三、从官方源码精简出第1个FreeRTOS

1、官方源码下载 (1)进入FreeRTOS官网:FreeRTOS官网 (2)点击下载FreeRTOS。 (3)选择待示例的项目进行下载。 2、删减目录 (1)下载后解压的FreeRTOS文件如下图所示。 (2)删除下图中红框勾选的文件。 (3)删除"FreeRTOSv202212.01\FreeRTOS\Demo"目录下用…

做好“关键基础设施提供商”角色,亚马逊云科技加快生成式AI落地

一场关于生产力的革命已在酝酿之中。全球管理咨询公司麦肯锡在最近的报告《生成式人工智能的经济潜力:下一波生产力浪潮》中指出,生成式AI每年可能为全球经济增加2.6万亿到4.4万亿美元的价值。在几天前的亚马逊云科技纽约峰会中,「生成式AI」…

ubuntu22安装如何安装window软件(.exe)

ubuntu未提供相应程序安装包,如何使用的ubuntu22.04 安装window提供的exe程序呢? 这里我了解有两种方案: 使用模拟器进行window程序的运行,但是肯定会有相应的性能损耗如(wine)在linux上运行virtualbox或…

Michael.W基于Foundry精读Openzeppelin第20期——EnumerableMap.sol

0. 版本 [openzeppelin]:v4.8.3,[forge-std]:v1.5.6 0.1 EnumerableMap.sol Github: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/utils/structs/EnumerableMap.sol EnumerableMap库提供了Bytes32ToB…

【Linux系统编程】冯诺依曼体系结构

目录 前言 什么是冯诺依曼体系结构? 冯诺依曼体系结构如何进行数据处理的? 存储器在冯诺依曼体系中有什么作用? 冯诺依曼体系结构为什么要这样设计? 冯诺依曼结构总结 前言 相信对于冯诺依曼这个人的名字大家一定不会感到陌…

[RT-Thread]基于ART-PI的YMODEM协议在文件系统(LFS,FAT,RAMFS)下的文件传输及其注意事项

[写作为了记忆,个人最终输出的内容往往是遗忘后最容易捡起的内容,朝花夕拾故以此作文] 目录 [写作为了记忆,个人最终输出的内容往往是遗忘后最容易捡起的内容,朝花夕拾故以此作文] 前提 准备工作 内容 问题也就是注意事项 前提 准备工作 创建基于ART-PI开发板(STM32H750)…

Kernel Exception导致手机重启案例分析

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、高温触发 Kernel Exception 重启问题二、解决方案三、提高电池温度方案 一、 高温触发 Kernel Exception 重启问题 手机 电池温度 默认60度以上高温…

网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(二)前后端实现用户的登录和注册功能【用户模块】

网页版Java五子棋项目(二)前后端实现用户的登录和注册功能【用户模块】 在用户模块我们要清楚要完成的任务一、MyBatis后端操作数据库1. 需要在数据库创建用户数据库1. 用户id2. 用户名3. 密码4. 天梯积分5. 总场数6. 获胜场数 2. 创建用户类User和数据库…

网络开发-IO模型

基本概念 I/O即数据的读取&#xff08;接收&#xff09;或写入&#xff08;发送&#xff09;操作 通常用户进程中的一个完整I/O分为两个阶段 用户进程空间<-->内核空间内核空间<-->设备空间&#xff08;磁盘、网卡等&#xff09; I/O分为内存I/O、网络I/O和磁盘…

python机器学习(六)决策树(上) 构造树、信息熵的分类和度量、信息增益、CART算法、剪枝

决策树算法 模拟相亲的过程&#xff0c;通过相亲决策图&#xff0c;男的去相亲&#xff0c;会先选择性别为女的&#xff0c;然后依次根据年龄、长相、收入、职业等信息对相亲的另一方有所了解。 通过决策图可以发现&#xff0c;生活中面临各种各样的选择&#xff0c;基于我们的…

考研408 | 【计算机网络】物理层

导图&#xff1a; 一、通信基础 基本概念&#xff1a; 物理层接口特性&#xff1a;物理层解决如何在连接各种计算机的传输媒体上传输数据比特流&#xff0c;而不是指具体的传输媒体。 物理层主要任务&#xff1a;确定与传输媒体接口有关的一些特性 典型的数据通信模型 数据通…

SAP-MM-发票校验的重复校验功能

路径&#xff1a;SPRO-物料管理-后勤发票校验-收入发票-设置重复发票检查 按公司代码设置重复检查&#xff0c;可以按三个方式进行检查&#xff0c;公司代码、参照、发票日期&#xff0c;如果此处未维护就是按供应商&#xff08;XK02&#xff09;的六项进行检查 但是如果两处都…

latex插入不连续的中线

在上面的示例中&#xff0c;\cmidrule(lr){1-3} 表示在第 1 列到第 3 列之间添加不连续的中线&#xff0c;\cmidrule(lr){4-6} 表示在第 4 列到第 6 列之间添加不连续的中线&#xff0c;以此类推。你可以根据需要调整列的范围和对齐方式。

合并两个有序链表(leetcode)

题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]思路 每次递归都会比较当前两个节点的值&#xff0c;选择较小的节点作为合并后的链…