在Ubuntu 20.04上安装MySQL的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

简介

MySQL 是一个开源的数据库管理系统,通常作为流行的 LAMP(Linux、Apache、MySQL、PHP/Python/Perl)堆栈的一部分安装。它实现了关系模型,并使用结构化查询语言(更为人所知的是 SQL)来管理其数据。

本教程将介绍如何在 Ubuntu 20.04 服务器上安装 MySQL 8.0 版本。完成本教程后,您将拥有一个可用于构建下一个网站或应用程序的工作关系型数据库。

先决条件

要按照本教程操作,您需要:

  • 一个安装了 Ubuntu 20.04 的服务器,具有非根管理员用户和已配置了 UFW 防火墙。要设置这些,请按照我们的 Ubuntu 20.04 初始服务器设置指南进行操作。

步骤 1 — 安装 MySQL

在 Ubuntu 20.04 上,您可以使用 APT 软件包存储库安装 MySQL。在撰写本文时,默认 Ubuntu 存储库中可用的 MySQL 版本是 8.0.27。

要安装它,请在服务器上更新软件包索引(如果您最近没有这样做):

sudo apt update

然后安装 mysql-server 软件包:

sudo apt install mysql-server

使用 systemctl start 命令确保服务器正在运行:

sudo systemctl start mysql.service

这些命令将安装并启动 MySQL,但不会提示您设置密码或进行任何其他配置更改。因为这会使您的 MySQL 安装不安全,接下来我们将解决这个问题。

步骤 2 — 配置 MySQL

对于 MySQL 的新安装,您需要运行 DBMS(数据库管理系统)附带的安全脚本。此脚本会更改一些较不安全的默认选项,例如远程 root 登录和示例用户。

使用 sudo 运行安全脚本:

sudo mysql_secure_installation

这将引导您完成一系列提示,您可以在其中对 MySQL 安装的安全选项进行一些更改。第一个提示将询问您是否要设置验证密码插件,该插件可用于测试新 MySQL 用户的密码强度,以确定其是否有效。

如果选择设置验证密码插件,您创建的任何使用密码进行身份验证的 MySQL 用户都将需要具有符合您选择的策略的密码。最强的策略级别 — 您可以通过输入 2 来选择 — 将要求密码至少为八个字符,并包含大写字母、小写字母、数字和特殊字符:

Securing the MySQL server deployment.Connecting to MySQL using a blank password.VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?Press y|Y for Yes, any other key for No: YThere 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                  filePlease enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:2

无论您是否选择设置验证密码插件,下一个提示将是为 MySQL root 用户设置密码。输入然后确认您选择的安全密码:

Please set the password for root here.New password:Re-enter new password:

请注意,即使您为 root MySQL 用户设置了密码,但此用户当前未配置为在连接到 MySQL shell 时使用密码进行身份验证。

如果您使用了验证密码插件,您将收到有关新密码强度的反馈。然后脚本将询问您是否要继续使用刚刚输入的密码,或者是否要输入新密码。假设您对刚刚输入的密码强度感到满意,请输入 Y 继续运行脚本:

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

然后,您可以按 Y,然后按 ENTER 来接受所有后续问题的默认值。这将删除一些匿名用户和测试数据库,禁用远程 root 登录,并加载这些新规则,以便 MySQL 立即遵守您所做的更改。

脚本完成后,您的 MySQL 安装将得到保护。现在,您可以继续创建一个使用 MySQL 客户端的专用数据库用户。

步骤 3 — 创建专用 MySQL 用户并授予权限

在安装时,MySQL 创建了一个 root 用户帐户,您可以使用它来管理数据库。此用户对 MySQL 服务器拥有完全权限,这意味着它对每个数据库、表、用户等都有完全控制。因此,最好避免在管理功能之外使用此帐户。本步骤概述了如何使用 root MySQL 用户创建新用户帐户并授予其权限。

在运行 MySQL 5.7(以及更高版本)的 Ubuntu 系统中,默认情况下,root MySQL 用户设置为使用 auth_socket 插件进行身份验证,而不是使用密码。此插件要求调用 MySQL 客户端的操作系统用户的名称与命令中指定的 MySQL 用户的名称匹配,因此您必须以 sudo 权限调用 mysql 以访问 root MySQL 用户:

sudo mysql

一旦您可以访问 MySQL 提示符,您就可以使用 CREATE USER 语句创建新用户。其一般语法如下:

CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';

CREATE USER 之后,您指定一个用户名。紧接着是一个 @ 符号,然后是此用户将连接的主机名。如果您只计划从 Ubuntu 服务器本地访问此用户,可以指定 localhost。将用户名和主机名都放在单引号中并不总是必要的,但这样做有助于防止错误。

在选择用户的身份验证插件时,您有几个选项。前面提到的 auth_socket 插件可能很方便,因为它提供了强大的安全性,而无需有效用户输入密码即可访问数据库。但它也会阻止远程连接,这可能会使外部程序需要与 MySQL 交互时变得复杂。

作为替代,您可以完全省略语法中的 WITH authentication_plugin 部分,以使用户使用 MySQL 的默认插件 caching_sha2_password 进行身份验证。MySQL 文档推荐此插件,因为它具有强大的安全功能,适合希望使用密码登录的用户。

运行以下命令以创建一个使用 caching_sha2_password 进行身份验证的用户。确保将 sammy 更改为您喜欢的用户名,password 更改为您选择的强密码:

CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

创建新用户后,您可以授予他们适当的权限。授予权限的一般语法如下:

GRANT PRIVILEGE ON database.table TO 'username'@'host';

此示例语法中的 PRIVILEGE 值定义了用户在指定的 databasetable 上允许执行的操作。您可以通过用逗号分隔每个权限来在一条命令中向同一用户授予多个权限。您还可以通过在数据库和表名称的位置输入星号(*)来全局授予权限。在 SQL 中,星号是用于表示“所有”数据库或表的特殊字符。

举例来说,以下命令授予用户全局权限,可以在服务器上的任何表上执行 CREATEALTERDROP 数据库、表和用户的操作,以及使用 INSERTUPDATEDELETE 从任何表中插入、更新和删除数据的权限。它还授予用户使用 SELECT 查询数据、使用 REFERENCES 关键字创建外键,以及使用 RELOAD 权限执行 FLUSH 操作的能力。但是,您应该只授予用户他们需要的权限,因此可以根据需要调整自己用户的权限。

您可以在官方 MySQL 文档中找到可用权限的完整列表。

运行此 GRANT 语句,将 sammy 替换为您自己的 MySQL 用户名称,以向您的用户授予这些权限:

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, INDEX, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

请注意,此语句还包括 WITH GRANT OPTION。这将允许您的 MySQL 用户向系统上的其他用户授予任何权限。

接下来,最好运行 FLUSH PRIVILEGES 命令。这将释放由于前面的 CREATE USERGRANT 语句而服务器缓存的任何内存:

FLUSH PRIVILEGES;

然后您可以退出 MySQL 客户端:

exit

将来,要以新的 MySQL 用户身份登录,您将使用类似以下的命令:

mysql -u sammy -p

-p 标志将导致 MySQL 客户端提示您输入 MySQL 用户的密码以进行身份验证。

最后,让我们测试一下 MySQL 安装。

第四步 —— 测试 MySQL

无论你是如何安装的,MySQL 应该已经自动开始运行了。为了测试这一点,可以检查它的状态。

systemctl status mysql.service

你会看到类似以下的输出:

● mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)Active: active (running) since Tue 2020-04-21 12:56:48 UTC; 6min agoMain PID: 10382 (mysqld)Status: "Server is operational"Tasks: 39 (limit: 1137)Memory: 370.0MCGroup: /system.slice/mysql.service└─10382 /usr/sbin/mysqld

如果 MySQL 没有在运行,你可以使用 sudo systemctl start mysql 命令来启动它。

作为额外的检查,你可以尝试使用 mysqladmin 工具连接到数据库,这是一个允许你运行管理命令的客户端工具。例如,以下命令表示以名为 sammy 的 MySQL 用户身份连接(-u sammy),提示输入密码(-p),并返回版本信息。请确保将 sammy 更改为你专用的 MySQL 用户的名称,并在提示时输入该用户的密码:

sudo mysqladmin -p -u sammy version

你应该会看到类似于以下的输出:

mysqladmin  Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Server version        8.0.19-0ubuntu5
Protocol version    10
Connection        Localhost via UNIX socket
UNIX socket        /var/run/mysqld/mysqld.sock
Uptime:            10 min 44 secThreads: 2  Questions: 25  Slow queries: 0  Opens: 149  Flush tables: 3  Open tables: 69  Queries per second avg: 0.038

这意味着 MySQL 已经启动并运行。

结论

现在你在服务器上安装了一个基本的 MySQL 设置。以下是你可以采取的一些下一步示例:

  • 设置一个 LAMP 或 LEMP 堆栈
  • 使用 SQL 练习运行查询
  • 使用 phpMyAdmin 管理你的 MySQL 安装

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

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

相关文章

Cmake之1.0版本重要特性及用法实例(八)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…

GoodSync Business - 企业级服务器同步与备份工具

现在越来越多公司会搭建服务器,或自建文件共享中心。那么如何才能实现对这些终端的高效管理、安全备份,以保障企业数据的安全呢? GoodSync Business 就是一款企业服务器同步与备份工具,适用于 Win / Mac 工作站,以及 …

Kafka【二】关于消费者组(Consumer Group)、分区(partition)和副本(replica)的理解

【1】概述 Apache Kafka 是一个分布式流处理平台,它允许你发布和订阅记录流,存储记录流,并且可以对这些记录流进行处理。在 Kafka 中,消息被发布到特定的主题(topic),然后由消费者(…

Datawhale X 李宏毅苹果书 AI夏令营 Task2打卡

线性模型(Linear model) 通常模型的修改来自于对问题的理解,即领域知识 基本定义:把输入特征x乘上一个权重,再加上一个偏置就可以得到预测的结果。 优点:简单易理解,可理解性好(权重…

算法基础-位运算

>> (右移运算) x >> y:表示将x的二进制值右移y位。 正数是直接右移y位,则高位(最左边)补y个0。 负数是求补码,然后右移y位,最高位补y个1,再求反码&#xff…

集成电路学习:什么是DAC数模转换器

DAC:数模转换器 DAC,全称Digital-to-Analog Converter,即数模转换器,是一种电子设备或电路,用于将数字信号转换为相应的模拟信号。在现代电子系统中,DAC扮演着至关重要的角色,它实现了数字电路与…

如何在UE5.4中重新定位动画?

动画在游戏和电影制作中扮演着至关重要的角色,而在虚幻引擎5.4(UE5.4)这一强大的实时3D创作平台中,重新定位动画的能力更是将创意表达推向了新的高度。本文将引导您探索UE5.4中重新定位动画的技巧,确保您的动画作品不仅…

Unity | 基础知识

装箱和拆箱: 获取对方的类型: GetType通过打点调用 as进行类型转换 运用Convert进行类型转换: 二维数组的定义 结构体类型 不同名称空间来调用:

Auto-Unit-Test-Case-Generator -- java项目自动测试生成

0.Pre-预备知识: 0.1.Maven是什么? [by Maven是什么?有什么作用?Maven的核心内容简述_maven是干什么用-CSDN博客 ] 是Java 领域中最流行的自动化构建工具之一,Maven 作为 Java 项目管理工具,具有: 包管…

互联网全景消息(1)之RabbitMq基础入门

一、消息中间件 1.1消息队列回顾 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实 现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ &a…

数据库mysql8.x中修改密码的方法

mysql数据库最新版本9.x都出来了,再不学就要被淘汰了!!这次使用的是8.0.39版本,大家可以去官网下载使用。 官网地址:https://dev.mysql.com/downloads/mysql/ 安装好后,默认密码是一串很难记忆的字符,记录…

day-46 旋转图像

思路 不能使用辅助数组,所以关键在于弄清楚旋转后坐标的变化规律。当矩阵的大小n为偶数时,以n/2行和n/2列的元素为起点,当矩阵的大小n为奇数时,以n/2行和(n1)/2列的元素为起点 解题过程 关键:旋…

【JavaWeb】Cookie、Session

文章目录 Cookie、Session一、Cookie(客户端)1、Cookie 的 特点2、Cookie 的 工作原理3、Cookie 的 基本操作5、Cookie 的 域名与路径6、Cookie 的 存活时间7、Cookie 的 删除 二、Session(服务端)1、Session 的 特点2、Session 的…

【学习笔记】卫星通信NTN 3GPP标准化进展分析(四)- 3GPP Release18内容

一、引言: 本文来自3GPP Joern Krause, 3GPP MCC (May 14,2024) Non-Terrestrial Networks (NTN) (3gpp.org) 本文总结了NTN标准化进程以及后续的研究计划,是学习NTN协议的入门。 【学习笔记】卫星通信NTN 3GPP标准化进展分析(一&#xff…

Codeforces Round 964 (Div. 4) A-E Java题解

比赛地址 Dashboard - Codeforces Round 964 (Div. 4) - Codeforces A题 签到题 给一个两位数 求各位上的数字和 直接对10取余加上本来的数除以10 // 注意类名必须为 Main, 不要有任何 package xxx 信息 // package Dduo; import java.io.*; import java.math.*; import j…

【Android自定义控件】Kotlin实现滚动效果的数字加减控件

前言 因业务上的需要,在APP中点餐时要有商品数目增减操作,数目增减的过程中有翻动的动画效果展现。在Android中有多种方式可以实现,本篇文章记录通过自定义View结合控件的平移动画相结合来实现此需求。 需求分析 根据上图分析控件的实现过程以…

力扣763-划分字母区间(Java详细题解)

题目链接:763. 划分字母区间 - 力扣(LeetCode) 前情提要: 因为本人最近都来刷贪心类的题目所以该题就默认用贪心方法来做。 贪心方法:局部最优推出全局最优。 如果一个题你觉得可以用局部最优推出全局最优&#xf…

【STM32】RS485

RS485是常见的串口接口。 大部分图片来源:正点原子HAL库课程 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 串口、UART、TTL、RS232、RS422、RS485的关系 1.1 串口 1.2 UART、TTL、RS232、RS422、RS485 1.3 常见串口标准的比较 …

JS 如何判断是否是IE浏览器

例子 if(!!window.ActiveXObject || "ActiveXObject" in window){alert("抱歉,不支持IE浏览器!");return; }

【微机原理】v和∧区别

🌟 嗨,我是命运之光! 🌍 2024,每日百字,记录时光,感谢有你一路同行。 🚀 携手启航,探索未知,激发潜能,每一步都意义非凡。 在汇编语言和逻辑表达…