如何在 Ubuntu 18.04 上安装 MySQL

2023-11-18

本教程的先前版本由以下人员编写榛子维尔多

介绍

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

简短版本的安装很简单:更新您的软件包索引,安装mysql-server包,然后运行包含的安全脚本。

  1. sudo apt update
  2. sudo apt installmysql 服务器
  3. sudomysql_安全_安装

本教程将解释如何在 Ubuntu 18.04 服务器上安装 MySQL 5.7 版本。但是,如果您希望将现有的 MySQL 安装更新到版本 5.7,您可以阅读MySQL 5.7 更新指南反而。

先决条件

要学习本教程,您将需要:

  • 通过以下方式设置一台 Ubuntu 18.04 服务器这个初始服务器设置指南,包括非root用户与sudo特权和防火墙。

第 1 步 — 安装 MySQL

在 Ubuntu 18.04 上,默认情况下,APT 软件包存储库中仅包含最新版本的 MySQL。在撰写本文时,这是 MySQL 5.7

要安装它,请使用以下命令更新服务器上的包索引apt:

  1. sudo apt update

然后安装默认包:

  1. sudo apt installmysql 服务器

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

  1. sudosystemctl启动mysql.service

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

第 2 步 — 配置 MySQL

对于全新安装,您需要运行附带的安全脚本。这更改了一些不太安全的默认选项,例如远程 root 登录和示例用户。在旧版本的 MySQL 上,您还需要手动初始化数据目录,但现在这是自动完成的。

运行安全脚本:

  1. sudomysql_安全_安装

这将引导您完成一系列提示,您可以在其中对 MySQL 安装的安全选项进行一些更改。第一个提示将询问您是否要设置验证密码插件,该插件可用于测试 MySQL 密码的强度。无论您选择什么,下一个提示将是为 MySQL 设置密码root用户。输入并确认您选择的安全密码。

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

要初始化 MySQL 数据目录,您可以使用mysql_install_db对于 5.7.6 之前的版本,以及mysqld --initialize对于 5.7.6 及更高版本。但是,如果您从 Debian 发行版安装 MySQL,如步骤 1 中所述,数据目录会自动初始化;您无需执行任何操作。如果您尝试运行该命令,您将看到以下错误:

Output
mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
. . .
2018-04-23T13:48:00.572066Z 0 [ERROR] Aborting

请注意,即使您已设置密码rootMySQL 用户,该用户在连接到 MySQL shell 时未配置为使用密码进行身份验证。如果您愿意,可以按照步骤 3 调整此设置。

步骤 3 —(可选)调整用户身份验证和权限

在运行 MySQL 5.7(及更高版本)的 Ubuntu 系统中,rootMySQL 用户设置为使用以下方式进行身份验证auth_socket默认情况下插件而不是使用密码。在许多情况下,这可以提供更高的安全性和可用性,但当您需要允许外部程序(例如 phpMyAdmin)访问用户时,它也会使事情变得复杂。

为了使用密码连接MySQLroot,您需要将其身份验证方法从auth_socket to mysql_native_password。为此,请从终端打开 MySQL 提示符:

  1. sudo mysql

接下来,使用以下命令检查每个 MySQL 用户帐户使用的身份验证方法:

  1. 从 mysql.user 中选择用户、authentication_string、插件、主机;
Output
+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)

In this example, you can see that the root user does in fact authenticate using the auth_socket plugin. To configure the root account to authenticate with a password, run the following ALTER USER command. Be sure to change password to a strong password of your choosing, and note that this command will change the root password you set in Step 2:

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

然后,运行FLUSH PRIVILEGES它告诉服务器重新加载授权表并使新的更改生效:

  1. 同花顺特权;

再次检查每个用户使用的身份验证方法以确认root不再使用身份验证auth_socket plugin:

  1. 从 mysql.user 中选择用户、authentication_string、插件、主机;
Output
+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)

您可以在此示例输出中看到rootMySQL 用户现在使用密码进行身份验证。一旦您在自己的服务器上确认了这一点,您就可以退出 MySQL shell:

  1. exit

或者,有些人可能会发现使用专用用户连接到 MySQL 更适合他们的工作流程。要创建这样的用户,请再次打开 MySQL shell:

  1. sudo mysql

Note:如果您启用了密码验证root,如前面段落所述,您将需要使用不同的命令来访问 MySQL shell。以下将以常规用户权限运行您的 MySQL 客户端,并且您只能通过身份验证获得数据库内的管理员权限:

  1. mysql -u root -p

从那里创建一个新用户并为其指定一个强密码:

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

然后,授予您的新用户适当的权限。例如,您可以使用以下命令授予用户对数据库中所有表的权限,以及添加、更改和删除用户权限的权力:

  1. GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

请注意,此时您不需要运行FLUSH PRIVILEGES再次命令。仅当您使用以下语句修改授权表时才需要此命令INSERT, UPDATE, or DELETE。因为您创建了一个新用户,而不是修改现有用户,FLUSH PRIVILEGES这里是不必要的。

之后,退出 MySQL shell:

  1. exit

最后,我们测试一下MySQL的安装情况。

第 4 步 — 测试 MySQL

不管你如何安装它,MySQL 都应该已经开始自动运行。要对此进行测试,请检查其状态。

  1. systemctl 状态 mysql.service

您将看到类似于以下内容的输出:

Output
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en
   Active: active (running) since Wed 2018-04-23 21:21:25 UTC; 30min ago
 Main PID: 3754 (mysqld)
    Tasks: 28
   Memory: 142.3M
      CPU: 1.994s
   CGroup: /system.slice/mysql.service
           └─3754 /usr/sbin/mysqld

如果 MySQL 没有运行,您可以使用以下命令启动它sudo systemctl start mysql.

要进行额外检查,您可以尝试使用以下命令连接到数据库mysqladmin工具,它是一个允许您运行管理命令的客户端。例如,此命令表示连接到 MySQLroot (-u root),提示输入密码(-p),并返回版本。

  1. sudomysql管理员-p -u根版本

您应该看到与此类似的输出:

Output
mysqladmin  Ver 8.42 Distrib 5.7.21, for Linux on x86_64
Copyright (c) 2000, 2018, 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		5.7.21-1ubuntu1
Protocol version	10
Connection		Localhost via UNIX socket
UNIX socket		/var/run/mysqld/mysqld.sock
Uptime:			30 min 54 sec

Threads: 1  Questions: 12  Slow queries: 0  Opens: 115  Flush tables: 1  Open tables: 34  Queries per second avg: 0.006

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

结论

您现在已经在服务器上安装了基本的 MySQL 设置。以下是您可以采取的后续步骤的一些示例:

  • 实施一些额外的安全措施
  • 重新定位数据目录
  • 使用 SaltStack 管理您的 MySQL 服务器
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 18.04 上安装 MySQL 的相关文章

随机推荐

  • 如何在 CentOS 8 上安装和使用 PHP Composer

    Composer是 PHP 的依赖管理器 就像 npm 的作用一样 Node js or pip是Python Composer 将提取您的项目所依赖的所有必需的 PHP 包并为您管理它们 它用于所有现代 PHP 框架和平台 例如 Lara
  • 如何在 Ubuntu 中添加 apt 存储库

    使用 Ubuntu 软件中心或命令行实用程序 例如apt or apt get这些软件包是从一个或多个 apt 软件存储库下载的 APT 存储库是网络服务器或本地目录 其中包含 APT 工具可读的 deb 包和元数据文件 虽然默认 Ubun
  • 如何在 Ubuntu 18.04 上安装 Visual Studio Code

    视觉工作室代码是微软开发的开源跨平台代码编辑器 它有一个内置的调试支持 嵌入式Git控制 语法突出显示 代码完成 集成终端 代码重构和片段 在 Ubuntu 计算机上安装 Visual Studio Code 最简单且推荐的方法是启用 VS
  • 如何在 CentOS 7 上安装 Atom 文本编辑器

    Atom是由GitHub开发的开源跨平台代码编辑器 它有一个内置的包管理器 嵌入Git控制 智能自动完成 语法突出显示和多个窗格 从本质上讲 Atom 是一个基于 Electron 构建的桌面应用程序 使用 HTML JavaScript
  • 如何在 Ubuntu 20.04 上安装 Git

    Git 是世界上最流行的分布式版本控制系统 被许多开源和商业项目使用 它允许您与其他开发人员协作进行项目 跟踪代码更改 恢复到之前的阶段 创建分支 和更多 Git 最初是由莱纳斯 托瓦尔兹Linux内核的创建者 本指南介绍如何在 Ubunt
  • 如何在 Ubuntu 18.04 上安装 VirtualBox 来宾添加

    虚拟盒子是一款开源 跨平台虚拟化软件 允许您同时运行多个来宾操作系统 虚拟机 VirtualBox 提供了一组可以安装在来宾操作系统中的驱动程序和应用程序 VirtualBox Guest Additions 来宾添加为来宾计算机提供了多种
  • Linux 类型命令

    The type命令用于显示有关命令类型的信息 它将向您展示在命令行上键入给定命令时将如何解释 在这篇文章中 我们将解释如何使用Linuxtype命令 如何使用 type 命令 type是 Bash 和其他 shell 如 Zsh 和 Ks
  • 如何在 CentOS 7 上使用 Apache 安装和保护 phpMyAdmin

    phpMyAdmin 是一个基于 PHP 的开源工具 用于通过基于 Web 的界面管理 MySQL 和 MariaDB 服务器 phpMyAdmin 允许您与 MySQL 数据库交互 管理用户帐户和权限 执行 SQL 语句 以各种数据格式导
  • 如何在 Ubuntu 20.04 上设置 Nginx 服务器块

    服务器块是一种 Nginx 指令 它定义特定域的设置 允许您在一台服务器上运行多个网站 对于每个网站 您可以设置网站文档根目录 包含网站文件的目录 创建单独的安全策略 使用不同的 SSL 证书等等 本文介绍如何在 Ubuntu 20 04
  • 如何在 CentOS 7 上添加和删除用户

    CentOS 以及所有其他 Linux 发行版都是一个多用户操作系统 每个用户可以对各种命令行和 GUI 应用程序拥有不同的权限级别和特定设置 了解如何添加和删除用户是每个 Linux 用户应该了解的基本技能之一 在本教程中 我们将解释如何
  • 如何在树莓派上安装和使用 Docker

    Docker 是一个容器化平台 允许您快速构建 测试和部署应用程序作为可移植 自给自足的容器 几乎可以在任何地方运行 在本教程中 我们将解释如何在 Raspberry Pi 上安装 Docker 并探索基本的 Docker 概念和命令 先决
  • 如何在 Ubuntu 18.04 上使用 Apache 安装和配置 Nextcloud

    下一云是一个开源 自托管的文件共享和协作平台 类似于 Dropbox 它捆绑了媒体播放器 日历和联系人管理 Nextcloud 可通过应用程序进行扩展 并拥有适用于所有主要平台的桌面和移动客户端 在本教程中 我们将向您展示如何在 Ubunt
  • 了解 /etc/passwd 文件

    Linux 系统上可以使用多种不同的身份验证方案 最常用和标准的方案是针对 etc passwd and etc 影子 files etc passwd是一个基于纯文本的数据库 包含系统上所有用户帐户的信息 这是owned第 644 章权限
  • 如何在 Debian 9 上使用 UFW 设置防火墙

    Debian 包含多个软件包 这些软件包提供了用于管理防火墙的工具 其中 iptables 作为基本系统的一部分安装 对于初学者来说 学习如何使用 iptables 工具正确配置和管理防火墙可能很复杂 但 UFW 简化了它 UFW Unco
  • 如何在 Ubuntu 14.04 服务器上安装 ISPConfig3

    介绍 尽管命令行是一个功能强大的工具 可以让您在许多情况下快速轻松地工作 但在某些情况下 可视化界面会很有帮助 如果您要在一台计算机上配置许多不同的服务 或者为客户端管理系统的某些部分 则可以使用诸如ISP配置可以使这个任务变得更加简单 I
  • 如何在 CentOS 7 上安装 Git

    介绍 版本控制已成为现代软件开发中不可或缺的工具 版本控制系统允许您在源代码级别跟踪您的软件 您可以跟踪更改 恢复到之前的阶段以及从基本代码分支以创建文件和目录的替代版本 最流行的版本控制系统之一是git 许多项目在 Git 存储库中维护其
  • 什么是 Kubernetes?

    介绍 Kubernetes 是一个功能强大的开源系统 最初由 Google 开发 并得到云原生计算基金会 CNCF 的支持 用于在集群环境中管理容器化应用程序 它旨在提供更好的方法来管理跨不同基础设施的相关分布式组件和服务 要了解有关 Ku
  • 使用 Debian 9 进行初始服务器设置

    介绍 当您首次创建新的 Debian 9 服务器时 您应该尽早执行一些配置步骤作为基本设置的一部分 这将提高服务器的安全性和可用性 并为您后续的操作奠定坚实的基础 第一步 以 root 身份登录 要登录您的服务器 您需要知道您的服务器的公共
  • 如何使用 DigitalOcean 云服务器创建虚荣或品牌名称服务器

    介绍 托管提供商或经销商特别感兴趣 拥有品牌或 虚荣域名服务器为客户提供了更专业的外观 它 无需要求您的客户将其域名指向另一个域名 公司的域名服务器 本教程将概述两种创建方法 自定义域名服务器 i 虚荣和 ii 品牌 Types 虚荣名称服
  • 如何在 Ubuntu 18.04 上安装 MySQL

    本教程的先前版本由以下人员编写榛子维尔多 介绍 MySQL是一个开源数据库管理系统 通常作为流行的一部分安装LAMP Linux Apache MySQL PHP Python Perl 堆栈 它使用关系数据库和 SQL 结构化查询语言 来