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

news2024/11/13 14:57:15

前置资源

一、数据库概述

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

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

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

相关文章

阿里云OSS文件存储

文章目录 参考准备创建bucketendpoint 和 bucket域名的访问路径AccessKey和OSS的开发文档 Springboot整合OSS引入依赖AliyunOssConfigAliyunOssPropertiesapplicatioin.yml简单上传和下载使用签名URL进行临时授权访问生成以PUT方法访问的签名URL来上传文件通过签名URL临时授权简…

WIFI 配网

配网:指的是外部向WiFi模块提供SSID和密码&#xff0c;以便Wi-Fi模块可以连接指定的热点 常见的配网方式有:-键配网smart config、SoftAP配网、蓝牙配网、屏幕配网。 1.0 一键配网 2.0 蓝牙配网 一键配网的模式对应的厂加模式 3.0 状态机WIFI模组物联网 4.0 创建枚举结构体 ty…

女性权益之镜:印度侵害事件分析

1.项目背景 近年来&#xff0c;印度社会关于女性权利的讨论日益频繁&#xff0c;然而&#xff0c;女性受侵害的违法事件仍层出不穷&#xff0c;这些事件不仅威胁到女性的生命安全&#xff0c;还深刻影响了社会的稳定与发展&#xff0c;尽管印度政府在法律和政策层面采取了一系…

实现并发网络服务器

一&#xff0c;网络服务器 1.单循环网络服务器 —— 同一时刻只能处理一个客户端任务 2.并发服务器 —— 同一时刻能处理多个客户端任务 二&#xff0c;并发服务器 1.多线程 2.IO多路复用 3.多进程 三&#xff0c;IO模型 1.阻塞IO 阻塞IO&#xff08;Blocking IO&…

IO进程day03(获取文件属性、目录操作、库Lib)

目录 【1】获取文件属性 1》stat函数 2》获取文件类型 3》获取文件权限 练习&#xff1a;编程实现“ls -l 文件名” 的功能 4》stat、fstat、lstat的区别 【2】目录操作 【3】库 Lib 1》文件分类 1> 头文件&#xff1a; 以 .h结尾的文件 2> 源文件&#xff1a…

Qt之控件介绍

目录 控件概述 QWidget核心属性 1.enabled属性 2.geometry属性 3.windowTitle属性 4.windowIcon属性 5.windowOpacity属性 6.cursor属性 7.font属性 8.toolTip属性 9.focusPolicy属性 10.styleSheet属性 按钮类控件&#xff1a; 1.PushButton 2.RadioBu…

Leetcode 17. 电话号码的字母组合 C++实现

Leetcode 17. 电话号码的字母组合 问题&#xff1a;给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 算法&#xff1a;递归嵌…

PyTorch深度学习模型训练流程:(二、回归)

回归的流程与分类基本一致&#xff0c;只需要把评估指标改动一下就行。回归输出的是损失曲线、R^2曲线、训练集预测值与真实值折线图、测试集预测值散点图与真实值折线图。输出效果如下&#xff1a; 注意&#xff1a;预测值与真实值图像处理为按真实值排序&#xff0c;图中呈现…

机器学习概述与应用:深度学习、人工智能与经典学习方法

引言 机器学习(Machine Learning)是人工智能(AI)领域中最为核心的分支之一,其主要目的是通过数据学习和构建模型,帮助计算机系统自动完成特定任务。随着深度学习(Deep Learning)的崛起,机器学习技术在各行各业中的应用变得越来越广泛。在本文中,我们将详细介绍机器学…

Datawhale X 李宏毅苹果书 AI夏令营 Task1笔记

课程内容 学习笔记 &#xff08;一&#xff09;术语解释 一 . 机器学习&#xff08;Machine Learning&#xff0c;ML&#xff09; 机器学习&#xff0c;在本书的解释中是让机器具备找一个函数的能力。个人理解是基于所拥有的数据构建起概率统计模型来对数据进行预测与分析。…

python可视化-散点图

散点图可以了解数据之间的各种相关性&#xff0c;如正比、反比、无相关、线性、指数级、 U形等&#xff0c;而且也可以通过数据点的密度&#xff08;辅助拟合趋势线&#xff09;来确定相关性的强度。另外&#xff0c;也可以探索出异常值&#xff08;在远超出一般聚集区域的数据…

【Java】Record的使用 (简洁教程)

Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容&#xff1a;三、问题描述四、解决方案&#xff1a;4.1 为什么引入Record4.2 Record与Class区别4.3 使用场景 五、总结&#xff1a;…

使用uni-app开发微信小程序

一、前提环境 1.1 &#xff1a;uniapp开发文档&#xff1a;https://uniapp.dcloud.net.cn/quickstart-cli.html 细节都在这一页&#xff0c;这里不过多解释 二、开发工具下载 2.1 微信开发者工具 下载链接&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/dev…

Java:Calendar类

文章目录 Calendar类常用方法代码 黑马学习笔记 Calendar类 calendar是可变对象&#xff0c;一旦修改后其对象本身表示的时间将发生变化 原始对象会跟着修改&#xff0c;造成原始对象的丢失 常用方法 代码 package Time;import java.util.Calendar; import java.util.Date;/…

【RabbitMQ高级特性】消息可靠性原理

1. 消息确认机制 1.1 介绍 我们可以看到RabbitMQ的消息流转图&#xff1a; 当消息从Broker投递给消费者的时候会存在以下两种情况&#xff1a; consumer消费消息成功consumer消费消息异常 如果说RabbitMQ在每次将消息投递给消费者的时候就将消息从Broker中删除&#xff0c…

用 like concat 不用 like,为了防止sql注入;#{}和${}的区别和用法;#{}预防SQL注入的原理

一、like concat 和 like mybatis中为了防止sql注入&#xff0c;使用like语句时并不是直接使用&#xff0c;而是使用concat函数<if test"goodName ! null and goodName ! "> and good_name like concat(%, #{goodName}, %)</if> concat()函数1、功能&a…

Webbench1.5安装使用Ubuntu

1、安装依赖包 sudo apt-get update sudo apt-get install libtirpc-dev2、安装Webbench1.5 参考https://github.com/baiguo/webbench-1.5 # 可能需要root权限&#xff0c;我是切换到root用户才安装成功 wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.…

APP.vue引入子组件进行页面展示

一.将vue项目启动服务器原始页面进行清空 打开APP.vue文件&#xff0c;将<template>标签里的内容和<style>标签里的内容 ctrl/ 选中进行注释&#xff0c;以及引入的Helloworld.vue文件内容代码进行注释 并且 ctrls 保存 服务器页面从原始页面 变为空白 二.在comp…

树莓派4B安装golang最新版(20210520)

前置条件&#xff1a; 树莓派4B 安装官方系统 Linux raspberrypi 5.10.17-v7l #1414 更换最新版的原因&#xff1a; 截至 2021.5.20 &#xff0c;Raspberry Pi OS 最新版系统中&#xff0c;默认安装golang1.11&#xff0c;但是使用 go get golang.org/x/crypto/ssh 时&#xff…

推荐系统实战(七)-多任务多场景(上)多任务

多任务Multi-Task&#xff0c;有时也被称为多目标Multi-Objective建模。比如说电商场景下&#xff0c;希望曝光的物料被多多点击&#xff0c;还希望商品被下单购买&#xff0c;因此同时建模三个目标&#xff1a;曝光到点击CTR&#xff0c;点击到购买转换率CVR&#xff0c;曝光到…