当前位置: 首页 > news >正文

(一) 初入MySQL 【认识和部署】

前置资源

一、数据库概述

1.1、数据库基本概念

数据(Data)

  •  描述事物的符号记录称为数据。数字、文字、图形、图像、声音、档案记录等都是数据。
  • 数据是以“记录”的形式按照统一的格式进行存储的,而不是杂乱无章的。 相同格式和类型的数据统一存放在一起,而不会把“人”和“书”混在一起存储。这样,数据的存储就能够井然有序。

表(行+列)

  • 数据存储在表中
  • 记录:行
  • 字段(属性): 列

数据库 

  • 数据库就是表的集合。

它是以一定的组织方式存储的相互有关的数据集合

关系数据库的表由记录组成,记录由字段组成,字段由字符或数字组成。它可以供各种用户共享, 具有最小冗余度和较高的数据独立性,它是统一管理的相关数据的集合。

1.2、数据库概念图

1.3、 数据库管理系统

数据库管理系统(Data base Management System,DBMS

是实现对数据库资源有效组织,管理和存取的系统软件
数据库的建立和维护功能,数据定义功能数据操纵功能,数据库的运行管理功能通信功能。

DBMS主要包括以下功能:

  • 数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能。
  • 数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出。
  • 数据操纵功能:包括数据查询统计和数据更新两个方面。
  • 数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控 制、数据库内部维护等功能。
  • 通信功能:DBMS 与其他软件系统之间的通信,如 Access 能与其他 Office 组件进行数据交换。

1.4、 数据库系统

数据库系统(DatabaseSystem,DBS

是一个人机系统,

一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户(包括数据库管理员)组成。用户可以通过 DBMS 操作数据库,也可以通过应用程序操作数据库。

应用程序是利用DBMS为解决某个具体的管理或数据处理的任务而编制的一系列命令的有序集合。如果应用程序比较完善,能够提供友好的人机界面,并编译成可执行文件发行,使得普通用户不需要具备计算机的专业知识,在较短时间就学会使用,那么就称为数据库应用软件。 (如Navicat)

常用的数据库应用软件有人事管理、财务管理、图书管理等信息管理软件及各类信息咨 询系统等。

数据库管理员(DatabaseAdministrator,DBA)负责数据库的更新和备份、数据库系统的维护、用户管理等工作,保证数据库系统的正常运行。DBA 一般由业务水平较高、资历较深的人员担任。


需要注意的是数据库、数据库系统、数据库管理系统,甚至数据库表等名词,在日常讨论中通常不严格区别。遇到此情况时,可以根据具体情况,判断出实际所指的是什么。
 

1.5、DBMS的工作模式如下:

1>接受应用程序的数据请求和处理请求

2>将用户的数据请求(高级指令)转换为复杂机器代码(底层指令)

3>实现对数据库的操作

4>从数据库的操作中接受查询结果

5>对查询结果进行处理(格式转换)

6>将处理结果返回给用户

二、关系型数据库和非关系型数据库

2.1、关系型数据库

数据库管理系统公司/起源主要用途/特点
MySQLOracle Corporation(原Sun Microsystems,后被Oracle收购)广泛使用的开源关系型数据库管理系统,适用于Web应用、中小企业等
SQL Server微软(Microsoft)商业关系型数据库管理系统,集成于微软的.NET框架,常用于企业级应用
Access微软(Microsoft)作为Microsoft Office套件的一部分,是一个轻量级的桌面数据库,适合小型项目和简单的数据管理(药店什么的)
Oracle Database甲骨文公司(Oracle Corporation)功能强大的商业关系型数据库管理系统,支持大规模、高并发的企业级应用
DB2国际商业机器公司(IBM)商业关系型数据库管理系统,提供高级数据管理能力,适用于各种规模的企业应用
SybaseSAP SE(原Sybase, Inc.)主要面向企业级市场的关系型数据库管理系统,现作为SAP ASE(Adaptive Server Enterprise)的一部分
PostgreSQL开源社区强大的开源对象-关系数据库系统,支持复杂查询和高级功能,广泛用于Web应用、科研等领域

2.2、非关系型数据库

非关系型数据库数据模型主要用途/特点
Redis键值对高速缓存数据库,支持多种数据结构(字符串、哈希、列表、集合、有序集合等),常用于实现快速数据访问和缓存功能
MongoDB文档型基于JSON的文档存储数据库,支持灵活的查询和索引,适用于需要高伸缩性和复杂查询的Web应用
Cassandra列族式分布式NoSQL数据库,专为高伸缩性和高可用性设计,适用于大数据量和高并发的场景
HBase列族式建立在Hadoop HDFS之上的分布式、可扩展的大数据存储系统,支持海量数据的实时随机读写
Neo4j图型图形数据库,专注于高效存储和查询图结构数据,适用于社交网络、推荐系统等场景

2.3、关系型数据库和非关系型数据库的区别

关系数据库:
关系数据库结构是二维数据库表,二维表当中每个字段(列)用来描述对象的一个属性,每个记录(行)用来描述一个对象的信息(完整信息),关系数据库写到哪里也就是存储在硬盘当中读写系统就会受到的IO限制或者瓶颈 。

关系数据库系统是基于关系模型 的数据库系统
关系模型的数据结构使用简单易懂的二维数据表
关系模型可用简单的"实体-关系"(e-r)图来表示

关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
优点:

  • 1、易于维护:都是使用表结构,格式一致;
  • 2、使用方便:SQL语言通用,可用于复杂查询;
  • 3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。

缺点:

  • 1、读写性能比较差,尤其是海量数据的高效率读写;
  • 2、固定的表结构,灵活度稍欠;
  • 3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。

---------------------------------------------------------------------------------------------------------------------------------

非关系型数据库(NoSQL):
MongoDB 、 Redis(内存数据库/缓存数据库)K-V键值对、与之类似的Memcache,K-V键值对
redis-memecache对比:
相同点:存储高热数据(在内存中高速运行)
不同点:redis可以做持久化保存,可以存储对象

非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。

优点:

  • 1、格式灵活:存储数据的格式采用更适合各自数据类型的数据模型,如键值对、文档、列族或图等。这种存储方式使得非关系型数据库能够更灵活地处理各种类型的数据,应用场景广泛,而关系型数据库则只支持基础类型。
  • 2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
  • 3、高扩展性;
  • 4、成本低:nosql数据库部署简单,基本都是开源软件。

缺点:

  • 1、不提供sql支持,学习和使用成本较高;
  • 2、无事务处理;
  • 3、数据结构相对复杂,复杂查询方面稍欠。
  • 4、好多数据写在内存中

三、Mysql的部署

前置注意

在CentOS中默认安装有MariaDB,是MySQL的一个分支,主要由开源社区维护。 CentOS 7及以上版本已经不再使用MySQL数据库,而是使用MariaDB数据库。 如果直接安装MySQL,会和MariaDB的文件冲突。 因此,需要先卸载自带的MariaDB,再安装MySQL。

#查看版本:
rpm -qa|grep mariadb
##卸载
rpm -e --nodeps 文件名
### 检查是否卸载干净:
rpm -qa|grep mariadb

另外关闭防火墙和selinux防止乱七八糟的意外。

3.1、yum安装MySQL5.7.20

1、卸载  先停掉mysql进程   (没有安装过的可以直接跳过)

 pkill -9 mysqld

2、使用yum -y remove删除之前的安装 (没有安装过的可以直接跳过)

rpm -qa|grep -i mysql

yum -y remove  对应的安装包(依次卸载 直到没有)

3、下载rpm包,在CentOS 7操作系统上安装MySQL 5.7社区版本【前置资源也有】

cd /usr/local/src/

wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

4、rpm安装

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

cd /etc/yum.repos.d/      进入我们的yum源,会发现多了

vim /etc/yum.repos.d/mysql-community.repo

我们需要修改 

 否则第五步失败

5、CentOS 7.0的yum用Mariadb来代替MySQL的安装。即使你输入的是yum install -y mysql , 显示的也是Mariadb的安装内容。

但是安装完上面的,可以看到这次不再提示安装Mariadb了(也就是完成4步)

yum -y install mysql-server

如果第四步没有操作

正确如下

6、安装完成后,密码为随机密码,需要重置密码。

首先启动,启动mysql服务

systemctl status  mysqld

查找初始密码

grep "password" /var/log/mysqld.log   

 我的密码是  =oNQ_2I_u69;   很狡诈,有=和;都是密码的一部分

重新修改密码

mysql -u root -p  

下面是初始密码(输入=oNQ_2I_u69; 

进入


 

alter user 'root'@'localhost' identified by '123Abc!x';

注意123Abc!x是你的新密码,这个密码是强密码,要求密码包含大小写字母、数字及标点符号,长度应该在6位以上。(如果需要修改简单,看3.3)

7、创建其他用户

在 MySQL 中,创建用户(包括设置密码)和授权是两个独立的步骤。

因此,您应该首先创建用户(如果需要的话)并设置密码,然后授予权限。

创建用户root001

create

CREATE USER 'root001'@'%' IDENTIFIED BY '你的密码';

更新密码

alter

ALTER USER 'root001'@'%' IDENTIFIED BY '新密码';

授权

grant   privileges   

GRANT ALL PRIVILEGES ON *.* TO 'root001'@'%' WITH GRANT OPTION;

这条命令授予了用户 root001 从任何主机连接到 MySQL 服务器,并对所有数据库和表拥有所有权限的能力,包括授权给其他用户的权限。

刷新权限

flush

FLUSH PRIVILEGES;

3.2、MySQL 5.7.20 二进制版本的安装

前置   安装mysql服务内存必须4G以上

根据rpm -qa | grep mariadb    移除mariadb 

官网MySQL :: Download MySQL Community Server (Archived Versions)

确定版本

rpm -qa | grep glibc

1、下载并上传MySQL软件到/opt

解压

tar -xzvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz  

创建一个目录

mkdir -p /application/mysql

转移内容

cd  /opt

mv mysql-5.7.20-linux-glibc2.12-x86_64/* /application/mysql/

2、用户创建

useradd -s /sbin/nologin mysql

查看

id mysql

3、设置环境变量

vim /etc/profile

#...行末
export PATH=/application/mysql/bin:$PATH

source /etc/profile

测试

mysql -V

4、生产环境中,根据运维经验应该先进行磁盘的配置,在进行MySQL的软件按照工作。

分区

fdisk   /dev/sdb

格式化,创建文件系统

mkfs.xfs /dev/sdb1

创建数据文件

mkdir /data

查看uuid

blkid

永久挂载

vim /etc/fstab

UUID="b7d12ef9-69a1-4e9f-a677-d8650f61cbf8"     /data   xfs     defaults

挂载所有在 /etc/fstab 文件中定义的文件系统的命令

mount  -a  

再次查看

 df -h

5、授权

mkdir /data/mysql/data -p

chown -R mysql:mysql /application/*

chown -R mysql:mysql /data/

无临时密码

mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data

6、启动数据库

配置文件的准备
cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF

启动sys-v方式

cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld

/etc/init.d/mysqld start

检查

netstat -anptu | grep 3306

或者

sysv方式启动过的话,需要提前关闭,才能以下方式登录

启动systemd方式
cat > /etc/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantenBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF

systemctl start mysqld.service

systemctl status mysqld.service
 

记得修改密码(上面是无密码的情况)

mysql -u root

ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';

3.3、其他的一些内容

3.3.1、把密码改简单的方法 

在mysql环境打开

SHOW VARIABLES LIKE 'vali%';

5.7默认会安装这个插件,若没有安装,则SHOW VARIABLES LIKE 'vali%'则会返回空。

解释

 validate_password_length 8 # 密码的最小长度,此处为8。
 validate_password_mixed_case_count 1 # 至少要包含小写或大写字母的个数,此处为1。
 validate_password_number_count 1 # 至少要包含的数字的个数,此处为1。
 validate_password_policy MEDIUM # 强度等级,

                            其中其值可设置为0、1、2。分别对应:
                           【0/LOW】:只检查长度。
                           【1/MEDIUM】:在0等级的基础上多检查数字、大小写、特殊字符。
                           【2/STRONG】:在1等级的基础上多检查特殊字符字典文件,此处为1。
 validate_password_special_char_count 1 # 至少要包含的个数字符的个数,此处为1

想要关闭这个插件,则在配置文件中加入 validate_password=off   并重启mysqld即可:

在 vim /etc/my.cnf配置文件中增加

validate_password=off


然后重启mysql 就 ok了.

重新启动mysqld

systemctl restart  mysqld

---------------------------------------------------------------------------------------------------------------------------------

3.3.2、一些配置

默认配置文件路径: 
配置文件:/etc/my.cnf
日志文件:/var/log/var/log/mysqld.log 
服务启动脚本:/usr/lib/systemd/system/mysqld.service 
socket文件:/var/run/mysqld/mysqld.pid

---------------------------------------------------------------------------------------------------------------------------------

3.3.3、 设置允许远程登录

登录到mysql里执行

mysql> use mysql
mysql> update user set user.Host='%'where user.User='root';
mysql> flush privileges;
mysql> quit

相关文章:

  • 【C语言从不挂科到高绩点】02-变量、数据类型、标识符、关键字
  • C的温故而知新:位操作(C Primer Plus第十五章)
  • 亲测解决electron的Unhandled Rejection
  • 华为OD 山峰个数 C语言实现
  • React antd Table表格动态合并单元格
  • 使用python请求接口方式(可进行并发测试)例子解析
  • C语言:编程世界的基石
  • JVM 方法区存放那些内容
  • vue将两个项目整合成一个
  • nginx-rewrite、if、浏览器分离、防盗链
  • PHP 全攻略:从环境搭建到实战项目的深度探索
  • 国产游戏技术能否引领全球?
  • 《算法竞赛进阶指南》0x26广搜变形
  • ROS实现简单避障
  • 如何利用「搭贝」进销存系统锁住库存
  • 【面试系列】之二:关于js原型
  • CSS中外联样式表代表的含义
  • HTML中设置input等文本框为不可操作
  • HTTP中GET与POST的区别 99%的错误认识
  • HTTP中的ETag在移动客户端的应用
  • Java|序列化异常StreamCorruptedException的解决方法
  • Java读取Properties文件的六种方法
  • Node项目之评分系统(二)- 数据库设计
  • PAT A1050
  • PHP的类修饰符与访问修饰符
  • React-flux杂记
  • React-redux的原理以及使用
  • Redis在Web项目中的应用与实践
  • SpingCloudBus整合RabbitMQ
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 阿里研究院入选中国企业智库系统影响力榜
  • 警报:线上事故之CountDownLatch的威力
  • 你真的知道 == 和 equals 的区别吗?
  • 前端存储 - localStorage
  • 数据科学 第 3 章 11 字符串处理
  • 微服务入门【系列视频课程】
  • 限制Java线程池运行线程以及等待线程数量的策略
  • #QT(串口助手-界面)
  • #QT项目实战(天气预报)
  • $jQuery 重写Alert样式方法
  • (03)光刻——半导体电路的绘制
  • (145)光线追踪距离场柔和阴影
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (二)linux使用docker容器运行mysql
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)ObjectiveC 深浅拷贝学习
  • (转)Oracle存储过程编写经验和优化措施
  • (自用)gtest单元测试
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .FileZilla的使用和主动模式被动模式介绍
  • @Async 异步注解使用