小白带你学习linux的MySQL的基础(二十七)

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 小白带你学习linux的MySQL的基础(二十七)



一、概述

1、什么是数据库

将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合

银行存款的信息

电话薄

数据库是存储、管理和操作组织化数据的软件系统

2、数据库能干什么

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

金融行业               存储分析客户的财务数据

电子商务                存储产品信息、订单信息等

社交媒体                 存储社交消息数据

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

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

 可靠性和稳定性          现代数据库系统通常具有高度可靠性和稳定性,可以提供持久性和容错

性,可以确保企业的数据安全性。

数据管理能力        数据库系统提供了一种强大的方式来管理数据,从数据的存储到访问都进行

一的管理。企业可以更好地跟踪、管理和报告数据,从而使工作更加高效。

数据共享和集成         企业常常需要从不同的部门和应用程序中收集信息和数据。通过使用数据

库,这些数据可以集成在一起,使企业更容易理解业务、做出决策。

数据安全性和隐私保护            企业往往会处理大量的机密数据,如个人信息、财务信息、业务数

据等等。数据库管理统可以提供安全的访问控制和数据保护功能,保护数据的隐私性和机密性。

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

可重用性。

二、数据库类型

1、关系型数据库,RDBMS

概述

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

特点

便于查询和操作                SQL语句

结构化数据                       使用行和列存放数据

数据的一致性和完整性          各种约束条件

并发性                              支持多用户连接的隔离性

代表产品

MySQL                  瑞典MYSQL AB公司开发,现由甲骨文公司管理

PostgreSQL           PostgreSQL全球开发组开发的免费的开源的数据库管理系统

2、非关系型数据库,NoSQL

概述

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

系型数据库不同

特点

非结构化数据               文本、图像、媒体等

分布式存储              分布在多个节点中,实现高并发

没有固定的规范模式             无需定义表和列,不强制要求结构

高可伸缩性            支持水平扩展,增加或删除节点

高性能                  高速读写操作,比传统的关系型数据库效率要高

代表产品

MongoDB             一款基于文档存储模型的非关系型数据库软件

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

三、数据库模型

1、层次型数据库模型

1966年,IBM研究员Codd提出层次结构模型

它的数据结构如同树状结构。每个节点都只有一个父节点,但可以有多个子节点这种模型存在层次

结构复杂、扩展性差、数据操作限制等问题

2、网状型数据库模型

1969年,CODASYL工作组发布了网络模型

它使用复杂链表来表示数据之间的关系,并增加了数据结构的灵活性和递归处理能力,从而解决

了层次结构模型的一些问题

解决了层次结构模型的一些问题。但是网络模型需要了解复杂的物理存储结构,对程序设计人员的要求比较高

3、关系型数据库模型

1970年,Codd提出了关系型模型,也就是目前SQL和RDBMS所采用的模型

关系型模型基于二维表格的结构组织数据,每个表格称为关系,每行记录代表一个实体,每列记录代表一个属性。关系之间通过主键和外键进行关联

它具有数据结构简单、数据组织规范、数据操作强大、数据完整性可控等优点,是目前应用最广泛的数据库模型

4、非关系型模型

四、MySQL安装

基础环境

关闭防火墙及更改为宽容模式

配置本地yum源

把主机改为能联网的状态下

ping百度一下

1、yum/rpm安装

下载安装包

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

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

2、安装数据库服务

rpm -ivh mysql57-community-release-el7-8.noarch.rpm

yum -y install mysql-server

3、问题解决

3.1、安装mysql提示公钥未安装

提示信息

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

分析原因

mysql密钥过期

解决办法

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

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

yum -y install mysql-server

不使用GPG密钥验证

yum -y install mysql-server --nogpgcheck

启动一下服务

systemctl start mysqld

3. 2、登录数据库时提示密码错误

提示信息

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

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

解决问题

使用随机密码登录

查看临时密码

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

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

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

mysql -u root -p

Enter password: 输入随机密码

自行重置密码

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

进入数据库的配置文件                   vim /etc/my.cnf

vim /etc/my.cnf

添加参数,不验证密码进入mysql              skip-grant-tables

接下来我们需要重启MySQL

systemctl restart mysqld

systemctl restart mysqld

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

mysql

查看数据库                 show databases;

show databases;

使用mysql数据表                  use  mysql;

use  mysql;

查看tables

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';

完事查看一下状态

flush privileges;

赋予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

systemctl restart mysqld

mysql -uroot -p123456

mysql -uroot -p123456

直接yum安装mariadb

yum -y install mariadb mariadb-server

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

mysqladmin  -uroot -p password '新密码'

五、源码安装

1、注意事项

CPU最少2核以上

内存最少2G以上

swap分区2G以上

硬盘空间至少20G以上

2、安装前的准备

安装依赖包

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

下载安装包

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的安装包

安装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可以大大提高编译速度。

3、安装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

4、配置

创建数据库文件夹和日志文件夹,更改用户为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

登录数据库修改初始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登录

本地登录       使用命令

借助软件登录        navicat

七、mysql配置

1、数据库目录结构

1.1rpm安装

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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
5月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
692 7
|
6月前
|
关系型数据库 MySQL 数据管理
Mysql基础学习day03-作业
本内容包含数据库建表语句及多表查询示例,涵盖内连接、外连接、子查询及聚合统计,适用于员工与部门数据管理场景。
118 1
|
6月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day01
本课程为MySQL基础学习第一天内容,涵盖MySQL概述、安装、SQL简介及其分类(DDL、DML、DQL、DCL)、数据库操作(查询、创建、使用、删除)及表操作(创建、约束、数据类型)。适合初学者入门学习数据库基本概念和操作方法。
232 6
|
6月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day02-作业
本教程介绍了数据库表的创建与管理操作,包括创建员工表、插入测试数据、删除记录、更新数据以及多种查询操作,涵盖了SQL语句的基本使用方法,适合初学者学习数据库操作基础。
142 0
|
6月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day03
本课程为MySQL基础学习第三天内容,主要讲解多表关系与多表查询。内容涵盖物理外键与逻辑外键的区别、一对多、一对一及多对多关系的实现方式,以及内连接、外连接、子查询等多表查询方法,并通过具体案例演示SQL语句的编写与应用。
181 0
|
6月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day01-作业
本教程包含三个数据库表的创建练习:学生表(student)要求具备主键、自增长、非空、默认值及唯一约束;课程表(course)定义主键、非空唯一字段及数值精度限制;员工表(employee)包含自增主键、非空字段、默认值、唯一电话号及日期时间类型字段。每个表的结构设计均附有详细SQL代码示例。
119 0
|
6月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day02
本课程为MySQL基础学习第二天内容,涵盖数据定义语言(DDL)的表查询、修改与删除操作,以及数据操作语言(DML)的增删改查功能。通过具体SQL语句与实例演示,帮助学习者掌握MySQL表结构操作及数据管理技巧。
193 0
|
6月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
470 158
|
6月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
6月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1118 152