MySQL:安装和MySQL基础

news/2025/2/22 5:53:29

     

一、centos7下安装MySQL

      说明:安装与卸载的过程中,用户全部切换成root,等初期完全适应mysql语句的时候,再尝试创建普通用户!!

1.1 卸载不必要的软件

关于mysql和mariadb:MySQL和MariaDB,它们有什么区别?_mariadb和mysql的区别-CSDN博客

[whb@VM-0-3-centos ~]$ ps ajx | grep mariadb//查看当前系统中正在运行的进程信息的命令

13134 14844 14843 13134 pts/0    14843 S+    1005   0:00 grep --color=auto mariadb

19010 19187 19010 19010 ?           -1 Sl      27  16:55 /usr/libexec/mysqld --basedir=/usr

--datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --logerror=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid -- socket=/var/lib/mysql/mysql.sock

[whb@VM-0-3-centos ~]$ systemctl stop mariadb.service // 停止服务

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===

Authentication is required to manage system services or units. Authenticating as: root Password:

==== AUTHENTICATION COMPLETE ===

[whb@VM-0-3-centos ~]$ ps axj |grep mariadb //检查发现服务已经停止

13134 14976 14975 13134 pts/0    14975 S+    1005   0:00 grep --color=auto mariadb

 1.2 检查并删除软件包

rpm -qa | grep mysql  :查询所有和mysql有关的安装包   rpm命令 - 搜索

xargs xargs 传递参数形式一个个喂给后面跟着的是要执行的命令  xargs命令详解 - 搜索 

1.3 备份/etc/my.cnf(配置文件) 备份/var/lib/mysql数据库

1.4 获取mysql的官方yum源

首先要查看一下当前机器的版本,确保等会下载的mysql版本要更新一点

官方yum源链接 http://repo.mysql.com/     右键查看页面源代码

 找到该和机器相同的版本(尽量选157  不要选180 否则系统会自动在他所在的yum源里去自由选择mysql版本  可能就会安装到最新的8.0版本 )

下载后将安装包移到机器中

对比前后yum源  ls /etc/yum.repos.d/ -al

安装yum源 rpm -ivh mysql57-community-release-el7.rpm

#对比前后yum源(更新了本地机器的yum源 具有mysql

然后查看一下   vim /etc/yum.repos.d/mysql-community.repo

 我们会发现有各种各样的工具,也有各种各样版本的mysql

yum list指令 linux - 搜索

看看能不能正常工作 yum list |grep mysql  (发现mysql的资源都可以列举出来)

此时安装包没有意义了,可以直接删掉!!

1.5 安装mysql服务

安装服务:yum install -y mysql-community-server

可能会出现以下问题

 验证是否安装成功  先看看配置文件是否存在 ls /etc/my.cnf

检查mysql的服务端和客户端

1.6 启动mysql服务

systemctl start mysqld.service   就可以查到一个mysql的守护进程

 netstat -nltp  可以查询到mysql的服务端口号(默认端口号是3306  后期可以通过配置文件改)

1.7 登录方法

1、如果有临时密码  就可以zhiji登录

获取root临时密码    grep 'temporary password' /var/log/mysqld.log

 使用临时密码登录  mysql -uroot -p

#判断修改密码时候新密码是否符合当前的策略,不满足报错,不让修改,关闭它

#安全强度,默认为中,即1,要求必须包含 数字、符号、大小写字母,长度至少为8位

mysql> set global validate_password_policy=0

#密码最小长度

mysql> set global validate_password_length=1

#修改本地登录密码,暂不授权远程登录

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'qwer@wu.888'

mysql> FLUSH PRIVILEGES; Query OK

#授权其他机器远程登录

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;

FLUSH PRIVILEGES;

2、有的版本没有默认密码,就尝试client尝试登录

3、以上都不行,就修改配置文件

打开/etc/my.cnf配置文件    vim /etc/my.cnf

然后在【mysqld】最后一栏配置 加入:skip-grant-tables 选项(意思是跳过认证)  并保存退出

然后重启mysql服务 systemctl restart mysqld

可以看到曾经的数据库

更详细的使用: centos7 安装 Mysql 5.7.27,详细完整教程 - 共感的艺术 - 博客园

1.8 配置文件的设置 

先打开 vim /etc/my.cnf

# For advice on how to change settings please see # 关于修改的建议可以看一下网址 http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

设置1: 

[mysql]

#default-character-set=utf8 ,暂不设置,mysql有bug,汉字不回显

设置2: port=3306

datadir表示建表建库时数据所在的路径

 log-error表示错误日志

设置3:character-set-server=utf8    //编码格式

设置4:default-storage-engine=innodb //存储引擎 

1.9 开机自启动(可以不设置)

先退出mysql命令行(exit),然后输入以下命令

#开启开机自启动

systemctl enable mysqld

systemctl daemon-reload

其实这个没啥意思 因为我们的云服务器不会关机 

1.10 一些问题

mysql 已经配置了客户端服务器utf8编码,但是无法输入中文 确保您在终端命令行中可以输入中文

[whb@VM-0-3-centos ~]$ env |grep LANG

LANG=en_US.utf8

1.11 其他安装

CentOS 6.5下编译安装MySQL 5.6.14_野马红尘的技术博客_51CTO博客

CentOS 7 通过 yum 安装 MariaDB

Windows下通过MySQL Installer安装MySQL服务_野马红尘的技术博客_51CTO博客

二、登录选项的认识

mysql(是一个网络服务)有很多选项

-h 指明登录部署了mysql服务的主机ip

-P 表示该服务所部署特定主机上的一个特定端口号

-u  以用户的身份去登录

-p 进行认证登录(带密码)

 mysql命令 - 搜索

注意:

1、如果没有写 -h 127.0.0.1 默认是连接本地

2、如果没有写 -P 3306 默认是连接3306端口号 

3、后面还是得尽量设置密码

4、密码输入的时候是不会回显的

三、什么是数据库 

3.1 站在服务器角度理解

1、mysql数据库服务的客户端

2、mysqld是数据库服务的服务端

3、mysql本质上是基于CS模式的一种网络服务

 4、他是基于TCP协议,端口号是3306

3.2 站在用户角度理解(服务+数据库

1、mysql是一套给我提供数据存储的网络程序

2、数据库一般指的是,在磁盘或者内存中存储的特定结构组织的数据--将来在磁盘上存储的一套数据库方案

3、数据库服务一般只的是mysqld

3.3  为什么不直接使用文件存储呢?

1、一般的文件确实提供了数据的存储功能,但是文件并没有提供非常好的数据管理能力(用户角度)

 文件保存数据有以下几个缺点:

文件的安全性问题

文件不利于数据查询和管理

文件不利于存储海量数据

文件在程序中控制不方便

2、数据库的本质:对数据内存存储的一套解决方案,你给我字段或者要求,我直接给您结果!

数据库存储介质:

磁盘

内存  

3、数据库的水平是衡量一个程序员水平的重要指标。

大体结构如下: 

        程序员并不需要去手动修改数据库的文件,而是将请求通过mysql交给mysqld,具体要怎么存储,格式是什么,任何细节我们都不需要去关心,由他帮助我们去数据库文件做!

3.4 主流数据库

SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。

Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑(银行),并发一般来说不如MySQL。

MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论 坛。对简单的SQL处理效果好。(生态比较好,主流数据库

PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可 以免费使用,修改和分发。

SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设 计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可 能只需要几百K的内存就够了。

H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

关系型数据库和非关系型数据库 - 搜索

3.5 服务器管理 

若windows也安装了mysql 

执行 win+r 输入 services.msc 打开服务管理器

通过下图左侧停止,暂停,重启动按钮进行服务管理

四、服务器数据库表之间的关系

      所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序这个管理程序可以管理多个数据库 一般开发人员会针对每一个应用创建一个数据库

为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。

五、数据库的使用样例 

 1、创建数据库   ----create  database  hello ;

 这个数据库实际上就是一个目录,被保存在 /var/lib/mysql (可在配置文件里修改)

 

2、使用数据库  use hello;

3、 创建数据库表  

mysql> create table student(
    -> id int,
    -> name varchar(32),
    -> gender varchar(2)
    -> );

 

数据库文件里多了两个文件 student.frm   student.ibd

4.表中插入数据 mysql> insert into student(id,name,gender) values(1,'张三','男');

5、查询表中数据 select *from student ;

总结:使用mysql建立一个数据库,建立一张表结构,插入一些数据--对比一下mysql在Linux中是如何表现的???

1、 建立数据库,本质上就是Linux下的一个目录

2、在数据库内建立表,本质上就是在Linux下创建对应的文件即可!

3、数据库本质其实也是文件!!只不过这些文件并不是由程序员直接操作,而是程序员通过mysql数据库服务mysqld发送请求,然后由mysqld帮我们进行操作!!!

数据库的逻辑存储结构:

六、MySQL的架构

    MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac和Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。

 第一层:连接池:把链接做好管理,并且也要有权限认证(判断你是否是一个合法用户),还有一些安全方面的策略

第二层(有点像编译器):对下达的mysql指令进行语法分析、词法分析,甚至还需要对查询的语句进行一定的优化。然后按照mysql的协议下达给下一层

第三层(有点像驱动,负责和OS打交道):不同种类存储引擎(因为数据有不同的种类,有文本型的、二进制型的、大文件类型…… 针对不同种类的数据采用不同的存储方案,表现出来的效率是有区别的),对优化后的语句进行解释,然后交给下一层的文件系统完成相关的操作

前三层都属于用户层!!站在网络的视角则是属于应用层!

七、MySQL语句分类

1、DDL【data definition language】 数据定义语言,用来维护存储数据的结构 代表指令: create(创建表), drop(丢弃表), alter(修改表结构)

2、DML【data manipulation language】 数据操纵语言,用来对数据进行操作 代表指令: insert(插入),delete(删除),update(更新)

        DML中又单独分了一个DQL,数据查询语言,代表指令: select(查询)

3、DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务 代表指令: grant(赋权),revoke(取消权限),commit

八、存储引擎

8.1 存储引擎

     存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。

MySQL的核心就是插件式存储引擎,支持多种存储引擎。

8.2 查看存储引擎

show engines;

8.3 存储引擎对比

其实最常用的是innoDB和MyISAM

配置文件里的默认存储引擎 

 


http://www.niftyadmin.cn/n/5861700.html

相关文章

SpringBoot+Vue3-学习笔记

1、SpringBoot特性 ①起步依赖,所有需要的依赖全部配置在一起 ②自动配置:遵循约定大约配置的原则,在boot程序启动后,一些bean对象会自动注入到ioc容器,不需要手动声明,简化开发 ③内嵌的Tomcat、Jetty(无…

Apache Spark 的主要特点

Apache Spark 是一个大数据处理框架,提供了快速、通用的数据处理引擎,支持在大规模数据集上进行高效的并行处理。它通过基于内存的计算以及优化的调度来加速数据处理任务,比传统的基于磁盘的数据处理框架(如Hadoop)要快…

排查JVM的一些命令

查看JVM相关信息的方法 环境&#xff1a; Win10, jdk17 查看端口的Pid netstat -ano | findstr <端口号>列出当前运行的JVM进程 ## 用于输出JVM中运行的进程状态信息。通过jps&#xff0c;可以快速获取Java进程的PID&#xff08;进程标识符&#xff09;&#xff0c; …

策略模式 (Strategy)详解

一、什么是策略模式&#xff1f; 定义&#xff1a; 策略模式是一种行为型设计模式。 它定义了一系列算法&#xff0c;将每个算法封装起来&#xff0c;并使它们可以相互替换。核心思想&#xff1a; 将算法的定义与使用分离。 客户端代码不直接调用具体的算法&#xff0c;而是通…

Vue Axios

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 使用 - Axios 目录 Axios 请求方法 功能 安装 使用CDN 引入axios 使用axios 赋值 总结 Axios Axios&#xff0c;基于 Promise 的 HTTP 客户端&#xff0c;可以工作于浏览器中&#xff0c;也可以在 node.js 中使用…

微信小程序——访问服务器媒体文件的实现步骤

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;趣享先生的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&…

使用Trae AI IDE,轻松实现交友聊天功能

目录 前言 开发者的日常痛点 1、开发效率瓶颈 2、AI在开发中的潜力 3、AI IDE和插件的区别 初识Trae&#xff1a;一个开发者的意外发现 1、关于Trae 2、Trae的核心功能 3、下载安装Trae指南 1.选择主题与语言 2.导入现有 IDE 配置&#xff08;可选&#xff09; 3.安…

ABC 391

目录 C. Make it Simple D. Swap to Gather E. GCD of Subset C. Make it Simple 看当前输入的两个点作为一对是否被标记过&#xff0c;用 set 判重就可以了 #include<bits/stdc.h> #define int long long using namespace std; const int N 1e5 5, INF 1e18;int …