Linux学习笔记——MySQL数据库管理系统安装部署

news2024/12/28 4:54:31

5.1、MySQL数据库管理系统安装部署

5.1.1、简介

1、MySQL简介

MySQL数据库管理系统(后续简称MySQL),是一款知名的数据库系统,其特点是:轻量、简单、功能丰富。

MySQL数据库可谓是软件行业的明星产品,无论是后端开发、大数据、AI、运维、测试等各类岗位,基本上都会和MySQL打交道。

让我们从MySQL开始,进行实战的Linux软件安装部署。

本次课程分为2个版本进行安装:

  • MySQL 5.7版本安装
  • MySQL 8.x版本安装

由于MySQL 5.x和MySQL 8.x各自有许多使用者,所以这两个版本我们都演示安装一遍。

2、注意

MySQL的安装过程中,除了会使用Linux命令外,还会使用到少量的数据库专用的:SQL语句。

对于SQL语句我们并未涉及,所以可以跟随课程的内容,复制粘贴即可。

5.1.2、MySQL5.7版本在CentOS系统安装

注意:安装操作需要root权限

MySQL的安装我们可以通过前面学习的yum命令进行。

5.1.2.1、安装

1、配置yum仓库

# 更新密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

# 安装MySQL yum库
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

1.由于MySQL并不在CentOS的官方仓库中,所以我们通过上述rpm命令:

  • 导入MySQL仓库的密钥
  • 配置MySQL的yum仓库

2.其余操作

  • 查询列出所有与mysql相关的rpm包:
rpm -qa | grep mysql
  • 要删除mysql57社区发布问题
rpm -e --nodeps mysql57-community-release

在这里插入图片描述

2、使用yum安装MySQL

# yum安装MySQL
yum -y install mysql-communtity-server

在这里插入图片描述

3、安装完毕后,启动MySQL并配置开机自启动

# 启动
systemctl start mysqld
# 自启动
systemctl enable mysqld

MySQL安装完成后,会自动配置为名称叫做:mysqld的服务,可以被systemctl所管理。

4、检查MySQL的运行状态

systemctl status mysqld

在这里插入图片描述

5.1.2.2、配置

主要配置管理员用户root的密码以及配置允许远程登录的权限。

1、获取MySQL的初始密码

# 通过grep命令,在/var/log/mysqld.log文件中,过滤temporary password关键字,得到初始密码
grep 'temporary password' /var/log/mysqld.log

在这里插入图片描述

2、登录MySQL数据库系统

# 执行
mysql -uroot -p
# 解释
# -u,登录的用户,MySQL数据库的管理员用户同Linux一样,是root
# -p,表示使用密码登录

# 执行完毕后输入刚刚得到的初始密码,即可进入MySQL数据库

在这里插入图片描述

3、修改root用户密码

# 在MySQL控制台内执行
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码'; 
# 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句,如123、abc

4、【扩展】,配置root的简单密码

我们可以给root设置简单的密码,如123456。

请注意,此配置仅仅是用于测试环境或学习环境的MySQL,如果是正式使用,请勿设置简单密码。

# 如果你想设置简单密码,需要降低MySQL的密码安全级别
set global validate_password_policy=LOW; # 密码安全级别低 
set global validate_password_length=4; # 密码长度最低4位即可

# 然后就可以用简单密码了(课程中使用简单密码,为了方便,生产中不要这样)
ALTER USER 'root'@'localhost' IDENTIFIED BY '简单密码'; 

5、【扩展】,配置root运行远程登录

默认情况下,root用户是不运行远程登录的,只允许在MySQL所在的Linux服务器登录MySQL系统。

请注意,允许root远程登录会带来安全风险。

# 授权root远程登录
grant all privileges on *.* to root@"IP地址" identified by '密码' with grant option;
# IP地址即运行登录的IP地址,也可以填写%,表示允许任何地址
# 密码表示给远程登录独立设置密码,和本地登录的密码可以不同

# 刷新权限,生效
flush privileges;

6、退出MySQL控制页面

# 退出命令
exit

# 或者通过快捷键退出:Ctrl+d

7、检查端口

MySQL默认绑定了3306端口,可以通过端口占用检查MySQL的网络状态。

netstat -anp | grep 3306

在这里插入图片描述

至此,MySQL就安装完成并可用了,请妥善保存好MySQL的root密码。

5.1.3、MySQL8.0版本在CentOS系统安装

注意:安装操作需要root权限

5.1.3.1、安装

1、配置yum仓库

# 更新密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

# 安装MySQL8.x版本 yum库
rpm -Uvh http://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm

2、使用yum安装MySQL

# yum安装MySQL
yum -y install mysql-communtity-server

3、安装完毕后,启动MySQL并配置开机自启动

# 启动
systemctl start mysqld
# 自启动
systemctl enable mysqld

MySQL安装完成后,会自动配置为名称叫做:mysqld的服务,可以被systemctl所管理。

4、检查MySQL的运行状态

systemctl status mysqld

5.1.3.2、配置

主要配置管理员用户root的密码以及配置允许远程登录的权限。

1、获取MySQL的初始密码

# 通过grep命令,在/var/log/mysqld.log文件中,过滤temporary password关键字,得到初始密码
grep 'temporary password' /var/log/mysqld.log

2、登录MySQL数据库系统

# 执行
mysql -uroot -p
# 解释
# -u,登录的用户,MySQL数据库的管理员用户同Linux一样,是root
# -p,表示使用密码登录

# 执行完毕后输入刚刚得到的初始密码,即可进入MySQL数据库

3、修改root用户密码

# 在MySQL控制台内执行
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'; 
# 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句,如123、abc

4、【扩展】,配置root的简单密码

我们可以给root设置简单的密码,如123456。

请注意,此配置仅仅是用于测试环境或学习环境的MySQL,如果是正式使用,请勿设置简单密码。

# 如果你想设置简单密码,需要降低MySQL的密码安全级别
set global validate_password.policy=0; # 密码安全级别低 
set global validate_password.length=4; # 密码长度最低4位即可

# 然后就可以用简单密码了(课程中使用简单密码,为了方便,生产中不要这样)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '简单密码'; 

5、【扩展】,配置root运行远程登录

默认情况下,root用户是不运行远程登录的,只允许在MySQL所在的Linux服务器登录MySQL系统。

请注意,允许root远程登录会带来安全风险。

# 第一次设置root远程登录,并设置远程密码使用如下SQL命令
create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
# 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句,如123、abc

# 后续修改密码使用如下SQL命令
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';

这里的%,表示允许任何地址;也可以将%修改成IP地址。

6、退出MySQL控制页面

# 退出命令
exit

# 或者通过快捷键退出:Ctrl+d

7、检查端口

MySQL默认绑定了3306端口,可以通过端口占用检查MySQL的网络状态。

netstat -anp | grep 3306

至此,MySQL就安装完成并可用了,请妥善保存好MySQL的root密码。

5.1.4、MySQL5.7版本在Ubuntu(WSL环境)系统安装

课程中配置的WSL环境是最新的Ubuntu22.04版本,这个版本的软件商店内置的MySQL是8.0版本。

所以我们需要额外的步骤才可以安装5.7版本的MySQL。

安装操作需要root权限,你可以:

  • 通过sudo su -,切换到root用户
  • 或者在每一个命令前,加上sudo,用来临时提升权限。

1、下载apt仓库文件

# 下载apt仓库的安装包,Ubuntu的安装包是.deb文件
wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb

2、配置apt仓库

# 使用dpkg命令安装仓库
dpkg -i mysql-apt-config_0.8.12-1_all.deb

弹出框中选择:ubuntu bionic(Ubuntu18.04系统的代号是bionic,选择18.04的版本库用来安装)

弹出框中选择:MySQL Server & Cluster

弹出框中选择:mysql-5.7

最后选择:ok

3、更新apt仓库的信息

# 首先导入仓库的密钥信息
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29

# 更新仓库信息
apt update

4、检查是否成功配置MySQL5.7的仓库

apt-cache policy mysql-server

5、安装MySQL5.7

#使用apt安装mysql客户端和mysql服务端
apt install -f -y mysql-client=5.7* mysql-community-server=5.7*

弹出框中输入root密码并选择ok,密码任意,课程中以123456代替。

再次输入密码确认。

6、启动MySQL

/etc/init.d/mysql start   # 启动
/etc/init.d/mysql stop    # 停止
/etc/init.d/mysql status  # 查看状态

7、对MySQL进行初始化

# 执行如下命令,此命令是MySQL安装后自带的配置程序
mysql_secure_installation
# 可以通过which命令查看到这个自带程序所在的位置
which mysql_secure_installation
  • 输入密码
  • 是否开启密码验证插件,如果需要增强密码安全性,输入y并回车,不需要直接回车(课程中选择直接回车)
  • 是否更改root密码,需要输入y回车,不需要直接回车(课程不更改)
  • 是否移除匿名用户,移除输入y回车,不移除直接回车(课程选择移除)
  • 是否禁止root用户远程登录,禁止输入y回车,不禁止直接回车(课程选择不禁止)
  • 是否移除自带的测试数据库,移除输入y回车,不移除直接回车(课程选择不移除)
  • 是否刷新权限,刷新输入y回车,不刷新直接回车(课程选择刷新)

8、登录MySQL

mysql -uroot -p
# 输入密码即可登录成功

至此,在Ubuntu上安装MySQL5.7版本成功。

5.1.5、MySQL8.0版本在Ubuntu(WSL环境)系统安装

课程中配置的WSL环境是最新的Ubuntu22.04版本,这个版本的软件商店内置的MySQL是8.0版本。

所以直接可以通过apt安装即可。

注意,课程是以WSL获得的Ubuntu操作系统环境。

如果你通过VMware虚拟机的方式获得了Ubuntu操作系统环境,操作步骤不用担心,和课程中是以WSL环境是完全一致的。

安装操作需要root权限,你可以:

  • 通过sudo su -,切换到root用户
  • 或者在每一个命令前,加上sudo,用来临时提升权限。

1、如果已经安装过MySQL5.7版本,需要卸载仓库信息

# 卸载MySQL5.7版本
apt remove -y mysql-client=5.7* mysql-community-server=5.7*

# 卸载5.7的仓库信息
dpkg -l | grep mysql | awk '{print $2}' | xargs dpkg -p

2、更新apt仓库的信息

# 更新仓库信息
apt update

3、安装mysql

apt install -y mysql-server

4、启动MySQL

/etc/init.d/mysql start   # 启动
/etc/init.d/mysql stop    # 停止
/etc/init.d/mysql status  # 查看状态

5、登录MySQL设置密码

# 直接执行:mysql
mysql

6、设置密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

7、退出MySQL控制台

exit

8、对MySQL进行初始化

# 执行如下命令,此命令是MySQL安装后自带的配置程序
mysql_secure_installation
# 可以通过which命令查看到这个自带程序所在的位置
which mysql_secure_installation
  • 输入密码
  • 是否开启密码验证插件,如果需要增强密码安全性,输入y并回车,不需要直接回车(课程中选择直接回车)
  • 是否更改root密码,需要输入y回车,不需要直接回车(课程不更改)
  • 是否移除匿名用户,移除输入y回车,不移除直接回车(课程选择移除)
  • 是否禁止root用户远程登录,禁止输入y回车,不禁止直接回车(课程选择不禁止)
  • 是否移除自带的测试数据库,移除输入y回车,不移除直接回车(课程选择不移除)
  • 是否刷新权限,刷新输入y回车,不刷新直接回车(课程选择刷新)

9、重新登录MySQL

mysql -uroot -p
# 输入密码即可登录成功

至此,在Ubuntu上安装MySQL8.0版本成功。

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

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

相关文章

xilinx ZYNQ 7000 AXI GPIO

.0AXI GPIO 第一部分 PS 和 PL之间的通讯有一个接口称为AXI。AXI总线具体的内容这边不去深究,可以理解为一种特殊协议的通讯方式。 AXI GPIO是什么意思? PL是FPGA它可以做成任何你想要的东西,做一个GPIO外设当然是可以的。 如上图所示&…

DoIP协议从入门到精通——通信建立

在DoIP专栏中,关于DoIP文章,主要讲述从车辆物理连接、车辆声明、车辆通信激活(Routine Activation)和诊断通信几个步骤。 本文介绍了Tester与车辆获取物理连接、车辆声明自身信息后接下来需要操作的就是本文所要分享的内容:Tester与车辆控制器的通信建立。 一、通信模式…

记一次堆外内存泄漏分析

文章目录1. 背景2. JVM 内存分布与分析2.1 JVM 内存分布2.2 堆外内存泄漏分析思路2.3 服务器 JVM 参数配置及实际内存分布2.4 JVM native 内存查看2.5 手动触发 Full GC3. 问题排查经历3.1 定位内存泄漏的位置及初步猜想1)定位 RES 区域存在内存泄漏2)分…

寒假每日一题W1D1——孤独的照片

题目描述 Farmer John 最近购入了 N 头新的奶牛,每头奶牛的品种是更赛牛(Guernsey)或荷斯坦牛(Holstein)之一。 奶牛目前排成一排,Farmer John 想要为每个连续不少于三头奶牛的序列拍摄一张照片。 然而&…

一本通 1267:【例9.11】01背包问题(详细代码)

经典01背包问题 这里给你3种方法 目录 DFS 思路: 代码: DFS记忆化 思路: 代码: 动态规划 思路: 代码: DFS 时间复杂度 :O(2^n) 思路: DFS求出所有选法,再用…

Maven 之 依赖管理

目录 1、依赖传递 小案例: 2、可选依赖 3、 排除依赖 4、可选依赖和排除依赖的区别 我们开发一个工程需要用到大量得jar包,而这些jar 包就是我们所说得依赖,一个项目可以配置多个依赖。 1、依赖传递 我们来看一下今天用来演示的工程。…

Linux性能学习(1.4):CPU_如何查看CPU上下文切换参数

文章目录1 系统总体上下文参数2 进程的上下文切换参数3 其它参考资料:vmstat:一个标准的报告虚拟内存统计工具 在前面大致了解了上下文切换的相关知识,那么如何在系统中查看上下文切换相关的参数? 1 系统总体上下文参数 使用vm…

人工势场法路径规划算法(APF)

本文主要对人工势场法路径规划算法进行介绍,主要涉及人工势场法的简介、引力和斥力模型及其推导过程、人工势场法的缺陷及改进思路、人工势场法的Python与MATLAB开源源码等方面 一、人工势场法简介 人工势场法是由Khatib于1985年在论文《Real-Time Obstacle Avoidan…

WPF使用触发器需要注意优先级问题

总目录 文章目录总目录前言一、问题开始二、问题说明三、问题订正总结前言 WPF使用触发器需要注意优先级问题 一、问题开始 现在有个需求: 初始状态(未选中)的时候,CheckBox的Content 为 “乒乓球”,然后选中之后&am…

python机器学习《基于逻辑回归的预测分类》

前言: 本文所有代码均在阿里天池实验室运行,本机的jupyter notebook也可运行。除此之外,还需要导入numpy,matplotlib,sklearn,seaborn包。每期文章前面都会有环境搭建说明。文中的讲解知识点均是按照从上往下讲解,将一些平常未接触…

⼯⼚⽅法模式

⼯⼚⽅法模式 ⼯⼚⽅法模式,属于创建者模式中的一种,这类模式提供创建对象的机制, 能够提升已有代码的灵活性和可复⽤性。 创建者模式包括:⼯⼚⽅法、抽象⼯⼚、⽣成器、原型、单例,这5类。 1.⼯⼚⽅法模式介绍 ⼯⼚…

LaoCat带你认识容器与镜像(二【一章】)

系列二章,祝大家新的一年事事顺心,想要的一定都实现。 本章内容 使用Docker镜像。 本文实操全部基于Ubuntu 20.04 一、使用Docker镜像 镜像(image)是Docker三大核心概念中最重要的,Docker运行容器前需要本地存在对应得…

在wsl下开发T113的主线linux(5)-构建ubi文件系统

接下来是构建文件系统,这里使用最新的buildroothttps://buildroot.org/download.htmlhttps://buildroot.org/download.html tar xf buildroot-2022.11.tar.gz cd buildroot-2022.11 make menuconfig 配置目标指令集类型 配置外部自定义编译器 配置生成文件系统类型…

数据结构和算法--算法与数据结构的概述、简单排序

目录 算法 算法概述 算法复杂度 数据结构 数据结构的概述 物理结构 逻辑结构 简单排序 1.选择排序 1.1算法描述 1.2算法实现 2冒泡排序 2.1算法描述 2.2算法实现 3插入排序 3.1算法描述 3.2算法实现 三种算法的比较 算法 算法概述 算法是一系列程序指令&am…

回溯算法题型

目录 一组合总和 二组合总和 三子集 四全排列 五解数独 一组合总和 题目描述: 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组…

ArcGIS基础:提取道路中心线

本实验为对道路路面数据进行中心线提取 以路边两侧边界为准,运用等分的办法实现道路中心线提取,原始数据如下所示(来源于网络)。 道路顶端有一些圆弧段的部分,需要把其去除。 首先要做的是面转线操作,如下…

HashMap解读

1.简介 HashMap ,是一种散列表,用于存储 key-value 键值对的数据结构,一般翻译为“哈希表”,提供平均时间复杂度为 O(1) 的、基于 key 级别的 get/put 等操作。 2.哈希表结构 哈希表结构为数组,链表和红黑树。如图 …

已解决+ FullyQualifiedErrorId : UnauthorizedAccess

已解决无法加载文件 E:\day_01\Scripts\activate.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的about_Execution_Policies。 CategoryInfo: SecurityError: (:) [ ]…

Spring Bean的配置详解

目录 1.bean基础配置 例如:配置UserDaolmpl由Spring容器负责管理 2.Spring开发中主要是对Bean的配置, Bean的常用配置一览如下: 3.bean的别名配置 4.bean作用范围配置 5.bean的实例化 6.bean生命周期 7.Spring的get方法 8.Bean的延迟加载…

57. 数据增广 / 图像增广 代码实现

1. 图像增广 在对常用图像增广方法的探索时,我们将使用下面这个尺寸为400 x 500的图像作为示例。 从github上把img下载下来后,放到同一目录下: d2l.set_figsize() img d2l.Image.open(./img/cat1.jpg) d2l.plt.imshow(img);大多数图像增广…