在Ubuntu 20.04上安装MySQL的方法

2024-09-01 06:28

本文主要是介绍在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 安装

这篇关于在Ubuntu 20.04上安装MySQL的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126196

相关文章

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

Win安装MySQL8全过程

《Win安装MySQL8全过程》:本文主要介绍Win安装MySQL8全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Win安装mysql81、下载MySQL2、解压文件3、新建文件夹data,用于保存数据库数据文件4、在mysql根目录下新建文件my.ini

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.