【MySQL基础】

news2024/11/22 6:17:33

目录

一、概述

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解析

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

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

相关文章

新零售转型战略:打造数字化时代持续性盈利的商业模式

新零售达成什么样子&#xff0c;能够创造更大得客户价值&#xff0c;从企业得角度来看&#xff0c;他一定要提升企业得获利能力。新零售应该怎么做&#xff1f;以客户需求为本&#xff0c;找出需求&#xff0c;重新创造场景. 从而提升用户体验加强粘性&#xff0c;而蚓链数字化…

抖音seo账号矩阵系统源码如何开发布局?

目录 一、 抖音SEO账号矩阵系统源码的开发布局步骤如下&#xff1a; 二。 开发部署源码 三、 开发部署功能设计 1. 短视频AI智能创作 2. 托管式账号管理: 3. 数据分析 4. 智能营销获客 四。 抖音seo源码开发部署交付技术文档包含 五。 开发代码展示&#xff1a; 一、 抖…

Layui下拉多选框

标题xmSelect插件&#xff1a; xmSelect文档 下载Layui第三方插件 下拉多选框效果&#xff1a; 实现方法(例子)&#xff1a; 将xmSelect插件的xm-select.js文件引入到layui中&#xff1a; <script src"public/js/xm-select/xm-select.js"></script> …

借助 Mybatis 的动态 SQL 解决传参不确定问题

在上一篇的&#xff1a;Mybatis 操作数据库的基本 CRUD 以及查询操作详析_糊糊涂涂的博客-CSDN博客中介绍了Mybatis使用固定SQL语句操作数据&#xff0c;本篇介绍 Mybatis 一个强大的特性&#xff1a;动态SQL。 动态 SQL 解决什么问题&#xff1f; 那当我们要执行的业务逻辑有…

carla与g29联合调试(一)

前言&#xff1a; 之前做的carla与g29的联合调试&#xff0c;现在记录一下carla控制g29的实现流程。 一、总体通讯流程 主要实现为carla中车辆的方向盘转动带着g29跟着一起转动&#xff0c;使用ros通讯来实现这个过程。 二、具体实现流程 2.1首先确定g29的力反馈和转动 使…

基于LoRA微调部署Stable Diffusion【免费试用阿里云】

文章目录 Stable Diffusion介绍环境及资源准备过程注交互式建模&#xff08;PAI-DSW&#xff09;的试用在创建的工作空间中创建实例安装 Diffusers Stable Diffusion介绍 Stable Diffusion 是一种文本到图像的潜在扩散模型&#xff0c;由 Runway 和慕尼黑大学合作构建&#xf…

学习day52

1.关于 error Component name "School" should always be multi-word vue/multi-word-component-names 这里是因为脚手架的规范原因&#xff0c; 解决办法&#xff1a; 我是在vue.comfig.js文件中加入了一条配置&#xff0c;即 lintOnSave:false 整个文件的完整…

Spring Boot单元测试入门指南

Spring Boot单元测试入门指南 JUnit是一个成熟和广泛应用的Java单元测试框架&#xff0c;它提供了丰富的功能和灵活的扩展机制&#xff0c;可以帮助开发人员编写高质量的单元测试。通过JUnit&#xff0c;开发人员可以更加自信地进行重构、维护和改进代码&#xff0c;同时提高代…

(学习笔记)如何理解TCP是面向字节流的协议,UDP是面向报文的协议?

如何理解字节流&#xff1f; 之所以会说TCP是面向字节流的协议&#xff0c;UDP是面向报文的协议&#xff0c;是因为操作系统对TCP和UDP协议的发送方的机制不同&#xff0c;也就是问题原因在发送方 为什么UDP协议是面向报文的协议&#xff1f; 当用户消息通过UDP协议传输时&…

从原理到实践,分析 Redisson 分布式锁的实现方案(二)

上篇讲解了如何用 Redis 实现分布式锁的方案&#xff0c;它提供了简单的原语来实现基于Redis的分布式锁。然而&#xff0c;Redis作为分布式锁的实现方式也存在一些缺点。本文将引入Redisson来实现分布式锁。 一、Redisson是什么 Redisson是一个基于Redis的分布式Java框架。它提…

flutter(01) windows桌面版 编译环境安装指南

1 flutter环境安装 flutter官网参考&#xff1a;Install | Flutter 先下载flutter SDK>&#xff1a;flutter sdk下载--官网&#xff0c;之后解压到C:\Users\XXX\data&#xff08;这里以该路径为例&#xff0c;但可以为其他自定义路径&#xff09;目录下&#xff0c;在这里…

5.python设计模式【单例模式】

内容&#xff1a;保证一个类只有一个实例&#xff0c;并提供一个访问它的全局访问点角色&#xff1a; 单例&#xff08;Singleton&#xff09; UML图 举个例子&#xff1a; 需求&#xff1a;一个类只能实例化一个对象&#xff0c;不能实例化多个对象 from abc import abstract…

MATLAB与ROS联合仿真——ROS环境搭建及相关准备工作(上)

本篇文章主要介绍在安装完ROS后&#xff0c;在进行MATLAB与ROS联合仿真之前&#xff0c;需要进行的一些环境搭建以及准备工作&#xff0c;主要分为 创建ROS工作空间及功能包、必备功能包安装、安装Gazebo11、导入实验功能包至工作空间、安装Visual_Studio_Code(选做)、常用便捷…

python 面向对象 - 类 - 实例 - 类的使用 - self - init方法 - ATM面向对象实验

目录 面向过程和面向对象的对比&#xff1f; 面向对象 面向对象两个重要概念&#xff1a; > class&#xff08;类&#xff09;、实例 类&#xff1a;具有相同属性或方法的对象的集合 属性(变量)&#xff1a;编号、位置、余额 方法&#xff08;函数&#xff09;&#xf…

[论文阅读笔记24]Social-STGCNN: A Social Spatio-Temporal GCNN for Human Traj. Pred.

论文: 论文地址 代码: 代码地址 作者在这篇文章中直接用GNN对目标的轨迹时空特征进行建模, 并用时序CNN进行预测, 代替了训练难度较大和速度较慢的RNN类方法. 0. Abstract 行人轨迹预测是一个比较有挑战性的任务, 有着许多的应用. 一个行人的轨迹不仅是由自己决定的, 而且受…

Vue消息订阅与发布

引入第三方库pubsub.js: npm i pubsub-js Student.vue import pubsub from pubsub-jsmethods:{sendStudentName(){// this.$bus.$emit(hello,this.name)pubsub.publish(hello,666)}}, School.vue import pubsub from pubsub-jsmounted() {// console.log("school&quo…

【监控系统】Promethus的查询PromQL详解及案例实战

首先我们先来了解一下什么是PromQL。 PromQL是Prometheus提供了内置的数据查询语言PromQL&#xff0c;全称为Prometheus Query Language。PromQL是对指标(Metric)的查询/聚合/过滤的处理&#xff0c;Metric的语法格式 <metric name>{<label name><label value&…

优维低代码实践:添加构件

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…

Mac 安装启动RabbitMq

使用HomeBrew安装 未安装的请参照我的这篇Mac安装HomeBrew文章 安装 执行命令 brew install rabbitmq启动方式 brew services start rabbitmq端口说明 端口用处5672RabbitMQ通讯端口&#xff0c;也就是连接使用的端口15672RabbbitMQ管理界面端口&#xff0c;需要开启Manage…

区块链实验室(10) - 实例说明PBFT的共识过程

前面描述过PBFT的仿真方式&#xff0c;见区块链实验室(3) – 用Go语言仿真PBFT算法&#xff0c;本文以上述仿真程序说明PBFT的共识过程。 为叙述方便&#xff0c;首先给出1个简化的网络&#xff0c;共4个节点&#xff0c;构成如下图所示的网络。这样的网络可以避免冗余的网络报…