初始数据库 - 了解数据库

centos 7 版本当中安装 mysql

安装与卸载中,⽤⼾全部切换成为root,⼀旦 安装,普通⽤⼾是可以使用的。

卸载不需要的环境

首先,在安装之前,要先确定你当前系统当中是否已经有了mysql 的环境,如果你不想卸载,继续用也可以,当然,也可以卸载之后再重新安装。

查看当前环境当中是否有 mqsql :

上述当中的 mariadb 其实就是 mysql,只不过是mysql 的一个开源分支。也是可以正常使用的,只要是 sql 的,其实使用方式都是差不多的。

使用下述 systemctl 命令 关闭 mysql  服务:
 

使用 rpm -pa 查看 使用 yum 下载的安装包,使用 grep 过滤出 mqsql 安装包:
 

 你可以一个一个卸载安装包,但是这样太麻烦。可以使用 xargs 命令可以把 安装包列表,以xargs 的形式 喂给卸载程序, 就可以批量话卸载:
 

 验证卸载:

如果上述的第一个路径当中的 my.cnf 文件已经被删除了,说明已经卸载成功了;第二个路径是上一个 mysql 残留下来的数据,这个数据没被删除也是在情理之中的。

 配置 mysql yum 源

 获取mysql官⽅yum源   http://repo.mysql.com/
 

通过上述的网址获取到  yum  源资源。

 在上述网站当中有很多的版本,首先要确定自己的版本是多少的:

我上述的版本是 centos 7.9.xx  的,所以,尽量选择相近的版本的 yum 源进行下载。

最常用的版本就是 mqsql57,在最后后面带上的 el7-11 的意思就是  centos 7.11 版本,对应下载即可。

 下载到 windows 桌面当中就可以在 linux 系统当中使用 rz 命令,来备份到 Linux 当中:

像上述一样选择 我们下载的安装到 Linux 当中:
 

 查看当中系统当中的 yum 源:

 在我们上述安装之后,可能不会有 mysql 的yum源,我们使用 rpm -ivh 上述mysql 安装包(相当于有安装,也就是解压并拷贝):
 

 查看,mysql :
 

在这个 yum 源当中就有 对应的版本 和 一些工具。

我们按照自己的需求安装即可。但是,其实会自动根据我们所选择的 yum 源,和当前我们的系统,自己选择合适的版本。


测试 安装是否成功:
 

说明当前的 yum 源已经生效了。

安装 mysql服务

yum install -y mysql-community-server

测试安装:
 

需要保证安装之后,由上述文件。

还需要有 mysqld 这个 mysql 服务端的程序。

还需要有 mysql 这样的服务(客户端)。

 启动 mysql :

 netstat -nltp 查看:

已经有 这 mysql 的服务端口号了。


mysql 的登录 

登录 mysql 用户:
 

此时我们发现登录不上去。

 解决方法有三个:


获取临时root密码:

grep 'temporary password' /var/log/mysqld.log

可以在上述 的 mysqld.log 文件当中查看密码。(这个 方式在高版本可能不能用了)

如果上述查阅到了密码:

#获取临时root密码
[whb@VM-0-3-centos 9.9]$ sudo grep 'temporary password' /var/log/mysqld.log
2021-04-12T03:23:46.153263Z 1 [Note] A temporary password is generated for
root@localhost: yLMalT:v+5l*
#使⽤临时密码登录[whb@VM-0-3-centos 9.9]$ mysql -uroot -p
Enter password:
1 2 3 4 5 6 7 8#判断修改密码时候新密码是否符合当前的策略,不满⾜报错,不让修改,关闭它
#安全强度,默认为中,即1,要求必须包含 数字、符号、⼤⼩写字⺟,⻓度⾄少为8位
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)#密码最⼩⻓度
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
#修改本地登录密码,暂不授权远程登录mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'qwer@wu.888';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)#如果你安装的最新的mysql,没有所谓的临时密码,root默认没有密码


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


 vim /etc/my.cnf    打开mysql配置⽂件:

然后,在[mysqld]最后⼀栏配置(不知道是什么,就放在配置⽂件最后) 加⼊: skip-grant-tables 选项,并保存退出():

skip-grant-tables 的意思就是 跳过 线权,不需要验证,跳过认证环节,直接登录。

如果你在修改的过程当中,已经启动了 mysql 的服务,那么你需要重启一下 mysql 的服务,上述配置文件当中修改的信息才会生效:

上述使用的是 restart ,这个命令的效果其实是 stop + start ,也就是说,上述命令相当于是下述的两个命令:


经过上述的步骤之后,你就可以免密登录 root 账户了,但是,当你在登录之时,还是会让你输入密码,不用担心,此时直接回车就可以了。如下所示,此时我们就登录上 mysql 了:

 简单配置配置文件

[mysql]
#default-character-set=utf8  // 配置编码格式

 因为 mysql 服务,默认是一个 网络服务,所以,我们可以自己绑定端口号,使用 port 字段,就可以像设置环境变量一样,设置默认端口号。

datadir 字段:我们将来在建表建立数据库,都会存储在 datadir 字段存储的 路径当中。

[mysqld]
# #
Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# #
Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# #
Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2Mport=3306                            // 默认端口号
datadir=/var/lib/mysql               // 存储用户建立数据库数据的路径
socket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.log        // 存储错误日志路径
pid-file=/var/run/mysqld/mysqld.pid  
character-set-server=utf8            // server端使用的 编码格式是 utf-8
default-storage-engine=innodb        // mysql 使用的存储引擎
# 配置完毕,重启mysql即可

同样的,每一次修改配置文件,都需要重启 mysql 服务。

设置开启自启动

 输入下述的两行命令,设置开始自启动 mysql :
 

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

常见问题

mysql 已经配置了客⼾端服务器utf8编码,但是⽆法输⼊中⽂
确保您在终端命令⾏中可以输⼊中⽂: 


[whb@VM-0-3-centos ~]$ env |grep LANG
LANG=en_US.utf8

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

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

其他安装 

CentOS 6.5下编译安装MySQL 5.6.14_野马红尘的技术博客_51CTO博客

CentOS 7 通过 yum 安装 MariaDB - 知乎 (zhihu.com)

Windows下通过MySQL Installer安装MySQL服务_野马红尘的技术博客_51CTO博客

windows 当中mysql 的 自启动

执行 win+r 输入 services.msc 打开服务管理器:

 

你可以在上述服务管理器当中找到你在windows 当中安装的 MySQL 找到对应的 Mysql,可以选择启动或者是 关闭。 

 

了解数据库

就算我们没有学习过数据库,看数据库这个名字要知道,这个东西就是拿来存储数据的。那么,存储数据,使用文件不就可以了吗?为什么还需要创建一个数据库呢?


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

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

 我们知道,我们使用 C/C++ 程序向 文件当中是输入输出数据,其实都是输入一些字符串,在文件当中保存数据都是以 字符的方式来一个一个存储数据的。

这样就有一个很大的问题:不同的语言程序对于文件当中的数据的读取有困难了,语言当中的数据类型相对于文件当中只有字符的话,就很复杂了。比如:有 int, double , short 等等。

高级语言当中之所以要创建出这么多的数据类型,就要要用不同的数据类型来描述不同表现方式的数据,使得计算机可以更好的识别处不同的数据类型,从而使用不同的运算方式。这大大的提高的计算机 和 用户之间的交互效率。

所以,如果是只看文件当中单纯的使用字符的方式来进行存储的话,是不行的。

首先,我们需要存储的数据体量可能是很大的,那么,我们要从中找到一些相同表现类型的数据,无疑是大海捞针;不看这个,就看程序员要使用怎么样的程序才能更好的提取出这些数据,如果文件当中的各种数据之间 存储 是没有规律的话,这很难实现。

 而数据库的本质就是:对于数据内容存储的一套解决方案,只需要用户或者是程序员,向数据库提供一个要求,数据库就可以给出对应要求的数据子集。 

数据库存储介质:

  • 磁盘
  • 内存

为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。

主流数据库
 

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

 mysql基本数据库操作

 连接数据库

mysql -h 127.0.0.1 -P 3306 -u root -p

因为 mysql 服务本身是一种 网络服务,所以在链接之时是需要告诉 主机ip 地址的。像上述的 ip 代表的就是 本地环回。 

网口本地环回地址详解? 有什么作用?_回环地址-CSDN博客

  

因为上述我们设置了 免密码,所以,-p 后面是空的,直接回车即可,不需要带上密码。


 我们上述设置了配置文件,所以可以简写为:

mysql -u root -p
  • 如果没有写 -h 127.0.0.1 默认是连接本地
  • 如果没有写 -P 3306 默认是连接3306端口号

上述就是默认本地主机,端口号使用配置文件当中默认的端口号。


 

谈一谈 mqsql 和 mysqld 

  •  mqsql 是mysql 的客户端;
  • 而 mysqld 是mysql 的服务器端。

所以,其实 mysql 本质上其实是一个网络服务。 

一个可执行程序,带 "d" 的,一般是一个程序的守护进程,mysql 是 基于 C(mysql)S(mysqld) 模式一种网络服务。mysqld的 就是这个网络服务的 守护进程

  •  mysql 是一套给我们提供数据服务的网络程序;
  • 而数据库一般是指,在磁盘或者内存当中存储的特定结构组织的数据。

服务器,数据库,表关系

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

 

 


 数据库使用案例

 创建一个 名为 helloworld 的 数据库(注意后面要带上分号):

create database helloworld;

 此时在存储数据库的目录当中,就存储了我们上述创建的一个数据库(下述当中是显示出一个目录出来):

 在mysql 服务当中使用 show databases; 也可以查看到当前的数据库:

 所以,本质上,在Linux 当中建立一个数据库就是建立一个目录


选择一个数据库(下述例子是使用 helloworld 这个数据库),对这个数据进行操作:

use helloworld

 


创建一个数据库表:

create table student(id int,name varchar(32),gender vatchar(2)
)

 在我们建立student 表之前,helloworld 目录当中只有如下一个文件:

 建立student 表之后,就多出了两个文件:
 

 所以, Linux 当中 在数据库当中创建一个 表,本质其实就是在Linux 当中创建一个文件。


 在上述建立的student表当中插入数据:

insert into student(id, name, gender) values (1, '张三' , '男');

 如果在插入过程当中出现下述的错误,说明当前属性的编码格式可能不是 utf-8 的:

 可以使用下述的命令来修改 表当中某一个属性的 编码格式:

alter table Student change 属性名 属性名 char(10) character set utf-8;

 

之后就可以 插入成功了:

我们可以尝试插入 多个对象:

然后使用 sql 语句对 student 表当中进行查询:
 

 


删除一个表:

DROP TABLE table_name ;    -- 直接删除表,不检查是否存在

MySQL 删除数据表 | 菜鸟教程 (runoob.com)


 上述例子的总结

上述我们简单的新建了一个数据库,然后在这个数据库当中建立了一个表,然后对于这个表当中的一个一个对象进行了一个访问查找的操作。

所以,其实本质上,我们新建一个数据库本质上就是在创建一个目录,在这个目录当中有一个数据库的配置文件,在这个数据库目录当中,我们新增一个 表其实就是 在这个数据库目录当中新增一个 几个文件。

对于上述的 数据库目录,和 目录当中管理着各个表的 文件,其实都不是有 用户 或者是 程序员去做的;

而是由 mysqld 服务器端帮我们去做的,用户 和 程序员本上是不参与 目录和文件的修改的,但是,通过 mysqld 我们可以对 数据库 和 数据库当中的表,和 表当中的一个一个对象属性,进行增删查改。

用户只需要通过 mysql 客户端 ,访问到 mysqld 服务器端,然后,通过 mysqld 服务器端访问到 对应主机当中的 数据库目录当中表文件,也就访问到数据库当中的 数据了。

至于数据库当中的数据,怎么被管理的,什么时候该刷新,什么时候进行增删查改··· 所有的关于数据管理的细节,作为用户或者是程序员其实都是不用关心的。作为用户只用关心,当前需要管理哪一些数据,当前需要增删查改什么数据供用户或者是程序员来使用。

 

 MySQL 架构

 MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行(在主流的操作系统当中)。比如:Unix/Linux、Windows、Mac 和 Solaris。
 

 上述的存储引擎之所以有很多种,是因为:用户存储的数据是有很多种的,比如:二进制的,文档形式的,大文件型式的···· 等等,需要用到不同的存储引擎来帮助用户来进行 增删查改。

所以,mysql 本身其实就是一个文件系统,只不过这个 musql 的 文件系统是在操作系统 之上的一个 文件系统。

 所以对于上述的 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;

 其中 innodb 引擎是使用得最多的。

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

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

相关文章

maui下sqlite演示增删改查

数据操作类 有分页 todoitemDatabase.cs: using SQLite; using TodoSQLite.Models;namespace TodoSQLite.Data {public class TodoItemDatabase{SQLiteAsyncConnection Database;public TodoItemDatabase(){}// 初始化数据库连接和表async Task Init(){if (Databa…

PPT插件-好用的插件-字距快速设置-大珩助手

字距快速设置 包含两端对齐、段首缩进、取消缩进、字间距、行间距、段后距 段首缩进 每次缩进两个字符,可对选中的文字、选中的多个文本对象两个层级操作 取消缩进 将缩进取消,可对选中的文字、选中的多个文本对象两个层级操作 字间距 预设了常用…

【GlobalMapper精品教程】065:连接SQL Server空间数据库并加载数据

Global Mapper是一个地图创建和编辑工具,无法像ArcGIS一样,基于SQL Server等大型关系型数据库。它本身也并不直接连接数据库。但是,Global Mapper可以与其他软件集成,以从数据库中获取数据并在地图上显示。本文讲述Global Mapper连接SLQ Server数据库的方法。 一、创建数据…

深入理解 Goroutines 和 Go Scheduler

本文将重点帮助您了解 Golang 中的 goroutines。Go 调度程序如何工作以在 Go 中实现最佳并发性能。我会尽力用简单的语言解释,这样你就可以理解了。 我们将介绍什么是操作系统中的线程和进程,什么是并发,为什么实现并发很难,以及 goroutines 如何帮助我们实现并发。然后,…

AtCoder ABC周赛2023 12/10 (Sun) D题题解

目录 原题截图: 题目大意: 主要思路: 注: 代码: 原题截图: 题目大意: 给定两个 的矩阵 和 。 你每次可以交换矩阵 的相邻两行中的所有元素或是交换两列中的所有元素。 请问要使 变换至…

JVM虚拟机系统性学习-垃圾回收器Serial、ParNew、Parallel Scavenge和Parallel Old

垃圾回收器 有 8 种垃圾回收器,分别用于不同分代的垃圾回收: 新生代回收器:Serial、ParNew、Parallel Scavenge老年代回收器:Serial Old、Parallel Old、CMS整堆回收器:G1、ZGC Serial:串行回收 Serial是…

Unity中实现ShaderToy卡通火(总结篇)

文章目录 前言一、把卡通火修改为后处理效果1、在Shader属性面板定义属性接收帧缓存纹理2、在片元着色器对其纹理采样后,与卡通火相加输出请添加图片描述 二、我们自定义卡通火1、修改 _CUTOFF 使卡通火显示在屏幕两侧2、使火附近屏幕偏红色 前言 在之前的文章中&a…

【IC验证】perl脚本——分析前/后仿用例回归情况

目录 1 脚本名称 2 脚本使用说明 3 nocare_list文件示例 4 脚本执行方法 5 postsim_result.log文件示例 6 脚本代码 1 脚本名称 post_analysis 2 脚本使用说明 help:打印脚本说明信息 命令:post_analysis help 前/后仿结束后,首先填…

计算机毕业设计 SpringBoot的企业内管信息化系统 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

首场“解数Talk” 直播来了——大模型语料数据联盟开源数据集解读

一、解数 Talk 介绍 为帮助广大开发者更好地了解大模型语料数据联盟发布的AI大模型语料数据,沟通大模型企业在AI视角下的数据需求,不断服务大模型产业生态和落地应用,联盟发起单位上海人工智能实验室联合成员单位共同打造“解数 Talk”系列直…

java系列-LinkedHashMap怎么实现LRU

1.定义变量accessOrder public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> {final boolean accessOrder;public LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder) {super(initialCapacity, loadFactor…

《地理信息系统原理》笔记/期末复习资料(9. 网络地理信息系统)

目录 9. 网络地理信息系统 9.1. 概述 9.1.1. 网络GIS概念 9.1.2. 网络GIS体系结构 9.1.3. 网络GIS内容体系 9.2. 分布式网络GIS 9.2.1. 分布式网络GIS概念 9.2.2. 分布式主要技术 9.3. WebGIS 9.3.1. WebGIS概念 9.3.2. WebGIS分类与特点 9.3.3. WebGIS技术框架 9…

SimCLR损失函数详解

图片来源&#xff1a;Self-Supervised Learning 超详细解读 (二)&#xff1a;SimCLR系列 文章目录 1. 数据增强2. 获得图片表征3. 正样本和负样本构建4. 计算相似度5. 计算图片之间相似的概率6. 损失函数为什么需要大规模的batchsize&#xff1f; 1. 数据增强 有一批batchsize…

LeetCode-旋转链表问题

1.旋转链表 题目描述&#xff1a; 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 思路&#xff1a; 这里向右移动k个位置&#xff0c;相当于从链表的倒数第k个节点处断开&#xff0c;之后再将断开的两个子链表按照相反顺序…

【数据结构和算法】--队列

目录 队列的概念及结构队列的实现初始化入队出队其他一些队列函数 小结队列相关题目 队列的概念及结构 队列是只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out) 的原则。 入队列&#xf…

持续集成交付CICD:通过API方式上传Nexus制品

目录 一、实验 1.通过API方式上传Nexus制品 二、问题 1.如何通过API方式上传PNG图片 2.如何通过API方式上传tar.gz 与 ZIP文件 3.如何通过API方式上传Jar file文件 4.如何通过API方式上传制品&#xff08;maven类型的制品&#xff09;文件 5.如何下载制品 一、实验 1.通…

各地加速“双碳”落地,数字能源供应商怎么选?

作者 | 曾响铃 文 | 响铃说 随着我国力争2030年前实现“碳达峰”、2060年前实现“碳中和”的“双碳”目标提出&#xff0c;为各地区、各行业的低碳转型和绿色可持续发展制定“倒计时”时间表&#xff0c;一场围绕“数字能源”、“智慧能源”、“新能源”等关键词的创新探索进…

【教程】Ipa Guard为iOS应用提供免费加密混淆方案

概述&#xff1a;使用ios加固工具对ios代码保护&#xff0c;保护ios项目中的核心代码&#xff0c; #ipagurd年终大促百厂联动暖冬特惠&#xff0c;超多软控件立享惊喜优惠>> ​ 简介 iOS加固保护是直接针对ios ipa二进制文件的保护技术&#xff0c;可以对iOS APP中的可…

Leetcode—113.路径总和II【中等】

2023每日刷题&#xff08;五十七&#xff09; Leetcode—113.路径总和II 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* …

使用 Taro 开发鸿蒙原生应用 —— 当 Taro 遇到纯血鸿蒙 | 京东云技术团队

纯血鸿蒙即将到来 在今年 8 月的「2023年华为开发者大会&#xff08;HDC.Together&#xff09;」上&#xff0c;华为正式官宣「鸿蒙Next」&#xff0c;这个更新的版本将移除所有的 AOSP 代码&#xff0c;彻底与 Android 切割&#xff0c;使其成为一个完全自主研发的操作系统&a…