轻松搭建MySQL 8.0:Ubuntu上的完美指南

欢迎来到我的博客,代码的世界里,每一行都是一个故事


在这里插入图片描述

轻松搭建MySQL 8.0:Ubuntu上的完美指南

    • 前言
    • 脚本编写
    • 脚本实现部署
      • 过程参数
      • 成功页面
    • 彩蛋
    • 坏蛋
      • 解决方法

前言

在数字化时代,数据就像是我们的宝藏,而MySQL数据库就是守护这宝藏的坚实堡垒。而今天,我们将一起踏上一场建造这座堡垒的奇妙之旅,在Ubuntu的世界里,我们将搭建MySQL 8.0,为我们的数据打造一个安全而稳固的家园。不论您是探险家、建筑师还是魔法师,这篇文章都将为您带来一场奇妙的冒险!

脚本编写

#!/bin/bash

# 添加 MySQL APT 仓库
wget https://dev.mysql.com/get/mysql-apt-config_0.8.15-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.15-1_all.deb

# 在安装过程中,可能会弹出提示让你选择 MySQL 版本和其他组件。
# 选择 MySQL 8.0 并继续安装。

# 更新包列表,这里可以不用
sudo apt-get update

# 安装 MySQL 服务器
sudo apt-get install -y mysql-server

# 启动 MySQL 服务
sudo systemctl start mysql.service

# 使 MySQL 服务开机自启
sudo systemctl enable mysql.service

# 运行安全安装向导
sudo mysql_secure_installation

# 可选: 登录到 MySQL 以创建数据库或用户,默认是空密码,下面会讲
# sudo mysql -u root -p

脚本实现部署

  1. 给脚本赋权chmod +x 脚本名称

  2. 执行脚本

过程参数

执行到下面这步可以看出,Connecting to mysql using a blank password,也就是使用空密码

image-20240424155104379

1、选择密码复杂度

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 

2、询问你是否要移除匿名用户。匿名用户允许任何人不需要用户名和密码就可以登录MySQL,这通常只在测试环境中使用。在生产环境中,保留匿名用户会带来安全风险,因为它可能允许未授权的用户访问数据库。

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : 

3、是否禁止root账户非localhost登录

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : 

4、这个提示询问你是否要移除 “test” 数据库。默认情况下,MySQL 会创建一个名为 “test” 的数据库,任何人都可以访问。这个数据库通常只用于测试,并且在进入生产环境之前应该被移除。

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : 

5、MySQL 安装向导建议重新加载权限表。这是为了确保你到目前为止所做的所有更改(如移除匿名用户、移除 “test” 数据库等)都会立即生效。这是一个重要的步骤,以确保你的安全设置被正确应用。

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : 

成功页面

image-20240424161739499

彩蛋

你会神奇的发现你输入mysql,然后直接回车,它就可以登录。前提是root账户,下图就是详细的原因

image-20240424163034533

如果你需要登录验证,可以执行以下命令

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
FLUSH PRIVILEGES;

坏蛋

有了彩蛋,当然坏蛋也是少不了的,你会发现不管怎么样你远程都是登录不了,即使你设置为root@%也会出现下面的报错

mysql> CREATE USER 'root'@'%' IDENTIFIED BY '12345678';
ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'%'

并且在mysql8以后默认不允许远程root登录,所以其实我们上面即使设计了也还是没用

解决方法

如果硬要登录,修改配置文件重新启动(这里不单单是只针对root账户,而是针对所有账户)

我的配置文件是在/etc/mysql/mysql.conf.d/mysqld.cnf

# If MySQL is running as a replication slave, this should be
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmpdir
# tmpdir                = /tmp
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1

将上面的bind-address改为0.0.0.0即可

再次执行会显示如下结果,也就是成功了

image-20240424170733809

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Qt 学习笔记】Qt常用控件 | 输入类控件 | Text Edit的使用及说明

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 输入类控件 | Text Edit的使用及说明 文章编号&#xff…

【题解】牛客挑战赛 71 - A 和的期望

原题链接 https://ac.nowcoder.com/acm/problem/264714 思路分析 快速幂求逆元 费马小定理: a MOD − 1 ≡ 1 ( m o d M O D ) a^{\text{MOD}-1} \equiv 1 \pmod{MOD} aMOD−1≡1(modMOD),可以转换为 a ⋅ a MOD − 2 ≡ 1 ( m o d M O D ) ① a \cd…

4.24总结

对部分代码进行了修改,将一些代码封装成方法,实现了头像功能,通过FileInputStream将本地的图片写入,再通过FileOutputStream拷贝到服务端的文件夹中,并将服务端的文件路径存入数据库中

Linear Blend Skinning (LBS)线性混合蒙皮

LBS是CG的基础概念之一。 Linear Blend Skinning: linearly blend the results of the vertex transformed rigidly with each bone. LBS:线性地混合顶点根据每个骨骼的刚性变形结果。 这个场景应用在哪里呢? 假如我们重建好一个人体,现在用…

水位监测识别摄像机

水位监测识别摄像机是一种利用人工智能技术进行水位监测的智能设备,其作用是监测水体的水位变化并识别潜在的水灾危险,以提供准确数据和及时预警,帮助保护人民生命财产安全。这种摄像机通过高清摄像头实时捕捉水体的图像,然后利用…

Coursera: An Introduction to American Law 学习笔记 Week 03: Property Law

An Introduction to American Law 本文是 https://www.coursera.org/programs/career-training-for-nevadans-k7yhc/learn/american-law 这门课的学习笔记。 文章目录 An Introduction to American LawInstructors Week 03: Property LawKey Property Law TermsSupplemental Re…

【yolo算法道路井盖检测】

yolo算法道路井盖检测 数据集和模型yolov8道路井盖-下水道井盖检测训练模型数据集pyqt界面yolov8道路井盖-下水道井盖检测训练模型数据集 算法原理 1. 数据集准备与增强 数据采集:使用行车记录仪或其他设备收集道路井盖的图像数据。数据标注:对收集到…

如何提交已暂存的更改到本地仓库?

文章目录 如何提交已暂存的更改到本地Git仓库?步骤1:确认并暂存更改步骤2:提交暂存的更改到本地仓库 如何提交已暂存的更改到本地Git仓库? 在Git版本控制系统中,当你对项目文件进行修改后,首先需要将这些更…

大学生在线考试|基于SprinBoot+vue的在线试题库系统系统(源码+数据库+文档)

大学生在线考试目录 基于SprinBootvue的在线试题库系统系统 一、前言 二、系统设计 三、系统功能设计 试卷管理 试题管理 考试管理 错题本 考试记录 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&#…

valgrind,memcheck的使用

一,valgrind介绍 ​ valgrind是一个开源的,检测内存泄漏的工具,通常在linux下使用,除此之外,他还能检测内存管理错误,线程bug等错误。粗浅的来讲,valgrind由两部分构成,一部分用来模…

每日OJ题_BFS解决拓扑排序③_力扣LCR 114. 火星词典

目录 力扣LCR 114. 火星词典 解析代码 力扣LCR 114. 火星词典 LCR 114. 火星词典 难度 困难 现有一种使用英语字母的外星文语言,这门语言的字母顺序与英语顺序不同。 给定一个字符串列表 words ,作为这门语言的词典,words 中的字符串已…

SpringBoot-无法从static上下文引用同非static方法

1.问题 说明:无法从static上下文引用同非static方法。 2.解决 说明:return后面的语句中,调用的是变量的方法,而不是类型的方法!

Pytorch学习之路 - CNN

目录 理论预热 实践 构建卷积神经网络 卷积网络模块构建 实战:基于经典网络架构训练图像分类模型 数据预处理部分: 网络模块设置: 网络模型保存与测试 实践 制作好数据源: 图片 标签 展示下数据 加载models中提供的模…

CMake:相关概念与使用入门(一)

1、Cmake概述 Cmake是一个项目构建工具,并且是跨平台的。 关于项目构建我们所熟知的有Makefile,然后通过make命令进行项目的构建,并且大多数是IDE都继承了make,比如:VS的nmake,Linux下的GNU make、Qt的qma…

OpenCV与AI深度学习 | 如何使用YOLOv9分割图像中的对象

本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。 原文链接:如何使用YOLOv9分割图像中的对象 1 介绍 在我们之前的文章中,我们使用 YOLOv8 探索了令人兴奋的对象分割世界。分割使计算机视觉比…

Linux进程详解:进程优先级,调度算法,进程特性

文章目录 进程优先级Linux下的调度算法进程特性 进程优先级 进程要访问某种软硬件资源,此时进程需要通过一定的方式(排队),来确认享受某种资源的先后顺序。 优先级是确认先后问题,权限是确认能不能的问题。 资源有限…

5个常见的前端手写功能:浅拷贝与深拷贝、函数柯里化、数组扁平化、数组去重、手写类型判断函数

浅拷贝与深拷贝 浅拷贝 浅拷贝是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址,所以如果其中一个对象改变了这个地…

数据库安全如何保障?YashanDB有妙招(上篇)

数据库作为信息系统的核心,不仅承载着海量的关键数据,还负责向各类用户提供高效、可靠的信息服务,数据库的安全性显得尤为关键,已成为信息安全体系的重中之重。 什么是数据库安全? 数据库安全是数据安全的一个子集&…

AI-数学-高中-45函数单调性与导数

原作者视频:【导数】【一数辞典】5函数单调性与导数(重要)_哔哩哔哩_bilibili 导数最重要作用:判断函数单调性。 示例:

基于SpringBoot和Leaflet的地震台网信息预警可视化

目录 前言 一、后台管理设计与实现 1、Model层 2、业务层 3、控制层 二、前端预警可视化设计与实现 1、网页结构 2、数据绑定 三、效果展示 总结 前言 在之前的几篇博客中,我们讲解了如何在Leaflet中进行预警信息提示效果,以及基于XxlCrawler进…