【MySQL基础】

目录

一、概述

1.什么是数据库

2.数据库能干什么

2.1 企业应用

2.2 金融行业

2.3 电子商务

2.4 社交媒体

2.5物联网

3.为什么要用数据库,优势、特性?

3.1 可靠性和稳定性

3.2 数据管理能力

3.3 数据共享和集成

3.4 数据安全性和隐私保护

3.5 减少数据冗余

二、数据库类型

1.关系型数据库 - RDBMS

1.1 概述

1.2 特点

1.3 代表产品

2.非关系型数据库 - NoSQL

1.1 概述

1.2 特点

1.3 代表产品

三、数据库模型

1.层次型数据库模型

2.网状型数据库模型

3.关系型数据库模型

4.非关系型数据库模型

四、MySQL安装

1.yum / rpm 安装

1.1 下载安装包

1.2 安装数据库服务

1.3 安装mysql提示公钥未安装

1.3.1 提示信息

1.3.2 分析原因

1.3.3 解决办法

1.4 登录数据库时提示密码错误

1.4.1 提示信息

1.4.2 分析原因 

1.4.3 解决方法

1.4.3.1 使用随机密码登录

1.4.3.2 自行重置密码

2.源码安装

2.1 注意事项

2.2 安装前准备

2.2.1 安装依赖包

2.2.2 下载安装包

2.2.3 安装gcc/升级gcc

2.2.4 安装mysql

2.2.5  配置

五、MySQL登录

1.本地登录

2.使用软件登录

六、MySQL配置(基础)

1.数据库目录结构

1.1 rpm安装

1.2 源码安装

2.主配置文件详解

2.1 /etc/my.cnf

2.2 拓展配置项


一、概述

1.什么是数据库

数据库是存储、管理和操作组织化数据的软件系统。通俗地说将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。(形如电话簿)

2.数据库能干什么

2.1 企业应用

存放用户数据、管理企业数据

2.2 金融行业

存储分析客户的财务数据

2.3 电子商务

存储产品信息、订单信息等

2.4 社交媒体

存储社交消息数据

2.5物联网

物联网设备在云服务平台的数据存储

3.为什么要用数据库,优势、特性?

3.1 可靠性和稳定性

现代数据库系统通常具有高度可靠性和稳定性,可以提供持久性和容错性,可以确保企业的数据安全性。

3.2 数据管理能力

数据库系统提供了一种强大的方式来管理数据,从数据的存储到访问都进行统一的管理。企业可以更好地跟踪、管理和报告数据,从而使工作更加高效。

3.3 数据共享和集成

企业常常需要从不同的部门和应用程序中收集信息和数据。通过使用数据库,这些数据可以集成在一起,使企业更容易理解业务、做出决策。

3.4 数据安全性和隐私保护

企业往往会处理大量的机密数据,如个人信息、财务信息、业务数据等等。数据库管理系统可以提供安全的访问控制和数据保护功能,保护数据的隐私性和机密性。

3.5 减少数据冗余

数据库技术可以帮助企业减少数据冗余和重复,提高数据的一致性、准确性和可重用性。

二、数据库类型

1.关系型数据库 - RDBMS

1.1 概述

关系型数据库是一种使用表格来展示和管理数据的数据库,关系型数据库的核心是数据之间的关系,因此也叫做“关系数据库”。RDBMS可以让用户很容易地使用和管理这些关系

1.2 特点

便于查询和操作:SQL语句
结构化数据:使用行和列存放数据
数据的一致性和完整性:各种约束条件
并发性:支持多用户连接的隔离性

1.3 代表产品

MySQL:瑞典MYSQL AB公司开发,现由甲骨文公司管理
PostgreSQL:PostgreSQL全球开发组开发的免费的开源的数据库管理系统

2.非关系型数据库 - NoSQL

1.1 概述

NoSQL(Not only SQL)是一种非关系型数据库模型,其数据存储和查询机制与传统的关系型数据库不同

1.2 特点

非结构化数据:文本、图像、媒体等
分布式存储:分布在多个节点中,实现高并发
没有固定的规范模式:无需定义表和列,不强制要求结构
高可伸缩性:支持水平扩展,增加或删除节点
高性能:高速读写操作,比传统的关系型数据库效率要高

1.3 代表产品

MongoDB:一款基于文档存储模型的非关系型数据库软件
Redis:一款基于内存存储的非关系型数据库,与MongoDB一样广泛应用于互联网领域, Redis常用于快速读写操作、缓存等场景

三、数据库模型

1.层次型数据库模型

  • 1966年,IBM研究员Codd提出层次结构模型
  • 它的数据结构如同树状结构。每个节点都只有一个父节点,但可以有多个子节点
  • 这种模型存在层次结构复杂、扩展性差、数据操作限制等问题

2.网状型数据库模型

  • 1966年,IBM研究员Codd提出层次结构模型
  • 它的数据结构如同树状结构。每个节点都只有一个父节点,但可以有多个子节点
  • 这种模型存在层次结构复杂、扩展性差、数据操作限制等问题

3.关系型数据库模型

  • 1970年,Codd提出了关系型模型,也就是目前SQL和RDBMS所采用的模型
  • 关系型模型基于二维表格的结构组织数据,每个表格称为关系,每行记录代表一个实体,每列记录代表一个属性。关系之间通过主键和外键进行关联
  • 它具有数据结构简单、数据组织规范、数据操作强大、数据完整性可控等优点,是目前应用最广泛的数据库模型

4.非关系型数据库模型

四、MySQL安装

1.yum / rpm 安装

1.1 下载安装包

wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

1.2 安装数据库服务

rpm -ivh mysql57-community-release-el7-8.noarch.rpm
yum -y install mysql-server

1.3 安装mysql提示公钥未安装

1.3.1 提示信息

  • mysql-community-common-5.7.42-1.el7.x86_64.rpm 的公钥尚未安装
  • 失败的软件包是:mysql-community-common-5.7.42-1.el7.x86_64
  • GPG  密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

1.3.2 分析原因

mysql密钥过期

1.3.3 解决办法

  • 安装新的密钥然后再安装服务

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum -y install mysql-server

  • 不使用GPG密钥验证

yum -y install mysql-server --nogpgcheck

1.4 登录数据库时提示密码错误

1.4.1 提示信息

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

1.4.2 分析原因 

输入的密码是错误的,所以拒绝你的访问

1.4.3 解决方法

1.4.3.1 使用随机密码登录
  • 查看临时密码

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

:记得先启动服务

  • 登录时使用查看到的随机密码

mysql -u root -p
Enter password: 输入随机密码

1.4.3.2 自行重置密码
  • 重置密码的第一步就是跳过MySQL的密码认证过程

进入数据库的配置文件
    vim /etc/my.cnf
               skip-grant-tables  添加参数,不验证密码进入mysql

  • 接下来我们需要重启MySQL

systemctl restart mysqld

  • 重新登录数据库时,直接按回车

mysql

查看数据库:show databases;

 使用mysql数据表:use  mysql;

 

show tables;

select * from user;

创建root用户使用新的密码:create  user  'root'@'localhost' identified by '123456';

如果报错,先刷新配置,在删除原来的root用户,然后再执行创建的操作:

flush privileges;
drop user 'root'@'localhost';
create  user  'root'@'localhost' identified by '123456';

  • 赋予root权限

grant all privileges on *.* to 'root'@'localhost' with grant option;

  • 刷新配置,退出数据库

flush privileges;
exit

  • 恢复最开始的配置文件

vim /etc/my.cnf
去掉配置项skip-grant-tables

  • 重启mysql,然后使用新密码重新登录数据库

systemctl restart mysqld
mysql -uroot -p‘123456’

:直接yum安装Mariadb

yum -y install mariadb mariadb-server

不使用配置文件越过密码验证,修改密码:

                mysqladmin  -uroot -p password '新密码'

2.源码安装

2.1 注意事项

  • CPU最少2核以上
  • 内存最少2G以上
  • swap分区2G以上
  • 硬盘空间至少20G以上

2.2 安装前准备

2.2.1 安装依赖包

yum -y install gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel

2.2.2 下载安装包

  • cmake-3.9.1-Linux-x86_64.tar.gz        安装cmake,8.0版本的mysql需要cmake3.5版本以上。
  • gcc-6.3.0.tar.gz                                    8.0版本的mysql需要gcc版本为5.3以上
  • mysql-boost-8.0.13.tar.gz                    下载带有boost的安装包

2.2.3 安装gcc/升级gcc

  • 安装gcc依赖包

yum -y install gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel glibc-headers

  • 安装gcc

tar xf gcc-6.3.0.tar.xz
cd gcc-6.3.0/
./configure --disable-multilib && make && make install
                

这个编译会非常耗费时间,如果有双核CPU可以使用make -j2,4核CPU可以使用make -j4可以大大提高编译速度。

:gcc的版本根据软件包的版本需求更新升级

2.2.4 安装mysql

tar xf mysql-boost-8.0.13.tar.gz


cd mysql-8.0.13/


cmake  -DBUILD_CONFIG=mysql_release \
-DINSTALL_LAYOUT=STANDALONE \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DENABLE_DTRACE=OFF \
-DWITH_EMBEDDED_SERVER=OFF \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_SSL=bundled \
-DWITH_ZLIB=system \
-DWITH_PAM=ON \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DINSTALL_PLUGINDIR="/usr/local/mysql/lib/plugin" \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EDITLINE=bundled \
-DFEATURE_SET=community \
-DCOMPILATION_COMMENT="MySQL Server (GPL)" \
-DWITH_DEBUG=OFF \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SSL=system \
-DWITH_BOOST=./boost


make -j2/4


make install

2.2.5  配置

  • 创建数据库文件夹和日志文件夹,更改用户为mysql

useradd -s /sbin/nologin mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql/
mkdir -p /var/log/mysql
chown -R mysql:mysql /var/log/mysql/
mkdir -p /var/run/mysql
chown -R mysql:mysql /var/run/mysql

  • 修改配置文件my.cnf

vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
!includedir /etc/my.cnf.d

  • 初始化mysql数据库

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/
    

随机密码会在提示信息中显示

  • 复制服务文件到/etc/init.d目录下

cp /opt/mysql-8.0.20/support-files/mysql.server /etc/init.d/
chmod a+x /etc/init.d/mysql.server
/etc/init.d/mysql.server start

  • 查看服务

netstat -anptl | grep mysql

端口:3306/tcp

  • 登录数据库修改初始root密码

echo "export PATH=/usr/local/mysql/bin:$PATH:/usr/local/bin" >/etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
mysql -u root -p        在回车之后输入随机密码

  • 修改密码

mysql> alter user 'root'@'localhost' identified with mysql_native_password BY '新密码';
mysql> flush privileges;

修改用户密码: ALTER USER 'username'@'localhost' IDENTIFIED BY 'new_password';

:看到Query OK, 0 rows affected (0.00 sec)则操作成功 

五、MySQL登录

1.本地登录

使用命令

2.使用软件登录

navicat等

六、MySQL配置(基础)

1.数据库目录结构

1.1 rpm安装

  • mysql:存储MySQL的数据文件和表结构定义等。
  • mysql-files:存放需要MySQL账户权限的文件。
  • mysql-keyring:存放加密密钥,以供MySQL使用。
  • mysql.sock:MySQL服务器的Unix套接字文件。
  • ib_logfile0和ib_logfile1:InnoDB引擎的事务日志文件。
  • ibdata1:InnoDB引擎的数据文件,包括表数据和索引等。
  • *.err:MySQL错误日志文件,记录MySQL运行时的错误和警告等信息。
  • *.pid:MySQL进程ID文件,存储MySQL进程的进程号。

1.2 源码安装

mysql-<version>/
├── extra/            # 额外的工具和脚本
├── include/            # 包含头文件
├── lib/            # 包含库文件
│        ├── libmysqlclient.so    # MySQL 客户端库文件
│        └── libmysqld.so    # MySQL 服务器端库文件
├── share/            # 包含共享文件
├── support-files/        # 包含初始化脚本和系统服务
│        ├── mysql.server    # MySQL 服务启动脚本
│        ├── mysql.service    # MySQL systemd 服务配置
│        └── ...             # 其他各种脚本和配置文件
├── bin/            # MySQL 二进制文件
│        ├── mysqld        # MySQL 服务器二进制文件
│        ├── mysql        # MySQL 客户端二进制文件
│        ├── mysqladmin    # 管理 MySQL 服务器的工具
│        ├── mysqldump        # 导出 MySQL 数据库的工具
│        └── ...            # 其他各种 MySQL 工具
├── man/            # MySQL 帮助手册
├── docs/             # MySQL 文档
├── sql/            # MySQL SQL 脚本文件
└── zlib/            # MySQL 所依赖的 zlib 库

2.主配置文件详解

2.1 /etc/my.cnf

  • [mysqld]:[mysqld]"表示该段配置是针对MySQL服务器的
  • datadir=/var/lib/mysql
  • socket=/var/lib/mysql/mysql.sock
  • log-error=/var/log/mysql/mysql-error.log
  • pid-file=/var/run/mysql/mysql.pid
  • max_connections=500
  • character-set-server=utf8mb4
  • collation-server=utf8mb4_unicode_ci
  • [mysql]:[mysql]"中的配置项表示该段配置是针对MySQL客户端的
  • default-character-set=utf8mb4

2.2 拓展配置项

  • port:MySQL端口号
  • log_warnings:设置错误日志是否记录警告信息
  • slow_query_log_file:慢日志文件路径名
  • long_query_time:当查询时间超过指定的秒数时,会被记录到慢日志中
  • innodb_buffer_pool_size:InnoDB缓存池大小
  • join_buffer_size:用于JOIN操作的缓存大小
  • max_allowed_packet:MySQL允许传输的最大数据包大小
  • skip_name_resolve:禁用DNS解析

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

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

相关文章

使用langchain与你自己的数据对话(三):检索(Retrieval)

之前我已经完成了使用langchain与你自己的数据对话的前两篇博客&#xff0c;还没有阅读这两篇博客的朋友可以先阅读一下&#xff1a; 使用langchain与你自己的数据对话(一)&#xff1a;文档加载与切割使用langchain与你自己的数据对话(二)&#xff1a;向量存储与嵌入 今天我们…

vue2+wangEditor5富文本编辑器(图片视频自定义上传七牛云/服务器)

1、安装使用 安装 yarn add wangeditor/editor # 或者 npm install wangeditor/editor --save yarn add wangeditor/editor-for-vue # 或者 npm install wangeditor/editor-for-vue --save在main.js中引入样式 import wangeditor/editor/dist/css/style.css在使用编辑器的页…

java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法

文章目录 一、记录文件相关操作方法二、代码1.读取路径返回List\<File>2.读取路径返回List\<String>3.删除文件夹4.删除文件 一、记录文件相关操作方法 二、代码 1.读取路径返回List<File> import org.slf4j.LoggerFactory; import org.slf4j.Logger;impo…

【Rust笔记】意译解构 Object Safety for trait

意译解构Object Safety for trait 借助【虚表vtable】对被调用成员函数【运行时内存寻址】的作法允许系统编程语言Rust模仿出OOP高级计算机语言才具备的【专用多态Ad-hoc Polymorphism】特性。 计算机高级语言中的“多态”术语是一个泛指。它通常可被细化为 基于继承关系的“子…

QPoint、QLine、QSize、QRect

QPoint、QLine、QSize、QRect QPointQLineQSizeQRect QPoint // 构造函数 // 构造一个坐标原点, 即(0, 0) QPoint::QPoint(); // 参数为 x轴坐标, y轴坐标 QPoint::QPoint(int xpos, int ypos);// 设置x轴坐标 void QPoint::setX(int x); // 设置y轴坐标 void QPoint::setY(in…

性能测试 Linux 环境下模拟延时和丢包实现

在性能测试过程中&#xff0c;我们还需要模拟网络异常的情况下&#xff0c;是否会出现一些异常数据。最常见的就是写库操作&#xff0c;比如说我们下单的场景&#xff0c;如果出现网络异常的时候是否会出现数据对不上这种情况。 如我们JMeter发送成功的请求数量和最终数据库表…

向量vector与erase()

运行代码&#xff1a; //向量vector与erase() #include"std_lib_facilities.h" //声明Item类 struct Item {string name;int iid;double value;Item():name(" "),iid(0),value(0.0){}Item(string ss,int ii,double vv):name(ss),iid(ii),value(vv){}frien…

将AWS S3大文件文件上传相关的API集成为js文件,功能包括 多文件并行上传、文件分片上传、断点续传、文件分片合成、上传暂停、取消上传、文件上传进度条显示

地址 https://github.com/gk-1213/easy-s3/tree/main easy-s3 将AWS S3大文件文件上传相关的API集成为js文件&#xff0c;功能包括多文件并行上传、文件分片上传、断点续传、文件分片合成、上传暂停、取消上传、文件上传进度条显示。 暂时不包括文件分片下载相关功能&#…

【论文阅读】利用道路目标特征的多期车载激光点云配准

目录 引 言1 道路场景点云特征2 配准方法2.1 配准基元获取2.2 特征点提取2.3 两期道路场景车载点云的配准 2.3.1 基于特征点的4PCS 粗配准 3 实验与分析4 结论5 参考文献 摘 要 针对车载移动测量系统获取的城市道路点云场景巨大、目标复杂多样&#xff0c;多期道路场景重访车载…

redis(10):spring+redis+mysql缓存实现

1 新建spring项目 2 修改pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="ht…

振弦采集仪及在线监测系统完整链条的岩土工程隧道安全监测

振弦采集仪及在线监测系统完整链条的岩土工程隧道安全监测 近年来&#xff0c;随着城市化的不断推进和基础设施建设的不断发展&#xff0c;隧道建设也日益成为城市交通发展的必需品。然而&#xff0c;隧道建设中存在着一定的安全隐患&#xff0c;如地质灾害、地下水涌流等&…

使用贝叶斯算法完成文档分类问题

贝叶斯原理 贝叶斯原理&#xff08;Bayes theorem&#xff09;是一种用于计算条件概率的数学公式。它是以18世纪英国数学家托马斯贝叶斯&#xff08;Thomas Bayes&#xff09;的名字命名的。贝叶斯原理表达了在已知某个事件发生的情况下&#xff0c;另一个事件发生的概率。具体…

持续部署CICD

目录 &#xff08;1&#xff09;CICD的开展场景 &#xff08;2&#xff09;项目实际应用 CICD 是持续集成&#xff08;Continuous Integration&#xff09;和持续部署&#xff08;Continuous Deployment&#xff09;简称。指在研发过程中自动执行一系列脚本来降低开发引入 bug…

后台管理系统中刷新业务功能的实现

实现 下载vueuse npm i vueuse/core在header组件中引入并给全屏按钮绑定点击事件 <el-button type"default" click"toggle" icon"FullScreen" circle></el-button>import { useFullscreen } from vueuse/coreconst { toggle } u…

electron的electron-packager打包运行和electron-builder生产安装包过程,学透 Electron 自定义 Dock 图标

electron的electron-packager打包运行和electron-builder生产安装包过程 开发electron客户端程序&#xff0c;打包是绕不开的问题。 macOS 应用构建&#xff0c;看似近在咫尺&#xff0c;实则坑坑致命。 场景&#xff1a;mac笔记本打包&#xff0c;以及生产出可交付的软件安装…

queue

文章目录 定义分类链式队列静态队列循环队列静态队列为什么必须是循环队列&#xff1f;循环队列需要几个参数&#xff1f;循环队列入队伪代码循环队列出队伪代码判断循环队列是否为空判断循环队列是否已满 循环队列的代码实现队列的应用 定义 一种可以实现“先进先出”的存储结…

探索Java API学习路线:从基础到高级的全面指南

文章目录 第一阶段&#xff1a;入门基础1. 环境准备2. 学习Java基础 第二阶段&#xff1a;熟悉常用的Java API1. Java标准库2. Java API文档 第三阶段&#xff1a;深入学习特定领域的Java API1. Java GUI API2. Java数据库连接&#xff08;JDBC&#xff09;API3. Java多线程API…

苍穹外卖day08——地址簿+用户下单+订单支付(做不了)

导入地址簿——需求分析与设计 产品原型 接口设计 数据库设计 导入地址簿——代码导入 导入地址簿——功能测试 没有问题 用户下单——需求分析与设计 业务说明 业务流程 接口设计 数据库设计 用户下单——代码开发 DTO设计和VO设计 Controller层中 RequestMapping(&q…

堆喷射的小例子

引自&#xff1a;https://blog.csdn.net/lixiangminghate/article/details/53413863 照着作者的意思&#xff0c;自己的测试代码&#xff1a; #include <iostream> #include <windows.h> #include <stdio.h>class base {char m_buf[8]; public:virtual int…

CAN学习笔记1:计算机网络

计算机网络 1 概述 计算机网络就是把多种形式的计算机用通信线路连接起来&#xff0c;并使其能够互相进行交换的系统。实际上&#xff0c;计算机网络包括了计算机、各种硬件、各种软件、组成网络的体系结构、网络传输介质和网络通信计数。因此&#xff0c;计算机网络是计算机…