目录
安装MySQL
获取mysql官⽅yum源
安装mysql yum 源
安装mysql服务
启动服务
登录
方法1:获取临时root密码
方法2:无密码
方法3:跳过密码认证
配置my.cnf
卸载环境
设置开机启动(可以不设)
常见问题
安装遇到秘钥过期的问题:
概念
什么是数据库?
主流数据库
基本使用
连接服务器
查看当前MySQL的数据库列表
创建数据库
使用数据库
创建数据库表
向表中插入数据
查询表中的所有数据
服务器,数据库,表关系
MySQL架构
SQL分类
存储引擎
查看存储引擎
存储引擎对比
安装MySQL
安装与卸载中,用户全部切换成为root,否则权限不够。
获取mysql官⽅yum源
获取mysql官⽅yum源 : Index of /232905 (mysql.com)
查看自己的系统版本:cat /etc/redhat-release
找⼀下和自己版本⼀致的资源,下载到你的本地,然后上传到你的Linux服务器。如果觉得该网页看不清版本,可以单机鼠标右键,点击查看网页源代码。常用的就是5.7版本的,可以在5.7版本下找一找有没有符合自己机器版本的。这里没有7.6所以我下载的是标红的版本。
下载完成后找到文件(建议把文件移动到桌面上,好找!),在Linux机器上使用rz指令把它上传到机器上,也可以直接拖拽。把文件上传到一个新目录下,如下图,我们就可以看到安装包了。
安装mysql yum 源
查看你本地的yum源:ls /etc/yum.repos.d/ -l
看看你的系统里有没有mysql相关的yum源,我这里也是没有的。
安装 yum 源 : rpm -ivh yum源文件
安装后就有了mysql的 yum源了(如果安装出错了,看看是不是权限不够,可以转换成root用户或sudo)。
看看yum源能否正常工作: yum list | grep mysql
内容太多就不演示了。
注:安装上了以后安装包就可以删掉了,不删也没问题。
安装mysql服务
安装指令: yum install -y mysql-community-server
怎么判断自己是否安装成功了呢?
用下面三个指令验证:
ls /etc.mycnf
which mysqld
which mysql
启动服务
启动 :systemctl start mysqld.service
如下图,可以发现服务就启动起来了。
登录
指令:mysql -uroot -p
但是发现要密码,我们没有密码怎么办呢?别着急接着往下看。
方法1:获取临时root密码
指令:grep 'temporary password' /var/log/mysqld.log
使用临时密码进行登录,然后修改密码。
查看密码等级:show variables like '%validate_password%';
更改密码等级为low,低等级:set global validate_password_policy=0;
更改密码长度为6:set global validate_password_length=6;
修改本地登录密码,暂不授权远程登录:
ALTER USER 'root'@'localhost' IDENTIFIED BY '自己的密码';
FLUSH PRIVILEGES;
方法2:无密码
如果你安装的最新的mysql,没有所谓的临时密码,root默认没有密码,试着直接登陆⼀下。
方法3:跳过密码认证
使用指令打开mysql配置⽂件: vim /etc/my.cnf
在[mysqld]最后⼀栏配置(不知道是什么的,就放在配置⽂件最后) 添加:skip-grant-tables 选项
重启mysql服务 # systemctl restart mysqld
一定要先重启mysql服务再登录!
此时就可以登录了,可以直接把-p去掉 直接使用 mysql -uroot 登录,也可以不去掉-p ,在输入密码那里,直接回车即可。
配置my.cnf
主要是设置 数据库客⼾端和服务器的默认编码格式。
使用指令打开mysql配置⽂件: vim /etc/my.cnf
将这三个写入文件中
port=3306
character-set-server=utf8
default-storage-engine=innodb
配置完毕,重启mysql即可。重启mysql服务 # systemctl restart mysqld
卸载环境
如果有安装不合适的环境可以进行卸载
先检查是否有mariadb存在: # ps ajx |grep mariadb
如果有,需要先停⽌mariadb 服务 :# systemctl stop mariadb.service
或者检查是否有mysqld运行: # ps ajx |grep mysql
停止mysql 服务 :# systemctl stop mysqld
检查系统安装包
rpm -qa | grep mariadb 或 rpm -qa | grep mysql
卸载安装包:yum remove mysql (自己手动一个一个卸载)
或 rpm -qa | grep mysql | xargs yum -y remove (把查询到的mysql安装包 全部卸载)
我这里就不卸载了,卸载mariadb也是一样的。
设置开机启动(可以不设)
使用云服务器的可以不设,因为云服务器基本不关机。
#设置开启开机⾃启动
systemctl enable mysqld
systemctl daemon-reload
常见问题
安装遇到秘钥过期的问题:
Failing package is: mysql-community-client-5.7.39-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
解决⽅案:更新一下秘钥
命令行# rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
概念
什么是数据库?
MySQL是一套提供数据存取的服务的网络程序。
MySQL的本质基于C(mysql)S(mysqld)模式的一种网络服务。
mysql :是数据库的客户端;
mysqld:是数据库的服务端(一般一个可执行程序带d的,我们叫它守护进程)。
这个数据库一般指的是在磁盘或内存中存储的特定结构组织的数据,也就是说这是一种将来在磁盘上存储的一套数据库的方案。
数据库服务特指-mysqld。
存储数据用文件就可以了,为什么还要弄个数据库呢?
因为文件保存数据有以下几个缺点:
- 文件的安全性问题
- 文件不利于数据查询和管理
- 文件不利于存储海量数据
- 文件在程序中控制不方便
为了解决这些问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标。
主流数据库
- SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
- Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
- MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
- PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
- SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
- H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
基本使用
连接服务器
平时在本地主机也可以省略掉 -h 和 -P。
注:
- 如果没有写 -h 127.0.0.1 默认是连接本地;
- 如果没有写 -P 端口号 默认是连接3306端口号。
查看当前MySQL的数据库列表
show databases;
数据库默认存放在 /var/lib/mysql目录下
创建数据库
create database 数据库名称;
创建数据库本质就是在Linux下创建的一个目录。
使用数据库
use 数据库名称;
创建数据库表
create table 表名称(表内容);
创建数据库表本质就是在Linux下创建的一个文件。
向表中插入数据
查询表中的所有数据
select * from 表名称;
数据库本质也是文件!只不过这些文件不由程序员直接操作,而是数据库服务帮我们进行操作。
服务器,数据库,表关系
所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如下:
MySQL架构
MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
SQL分类
- DDL【data definition language】 数据定义语言,用来维护存储数据的结构
代表指令: create, drop, alter
- DML【data manipulation language】 数据操纵语言,用来对数据进行操作
代表指令: insert,delete,update
- DML中又单独分了一个DQL,数据查询语言,代表指令: select
- DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务
代表指令: grant,revoke,commit
存储引擎
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎。
查看存储引擎
show engines;