在Ubuntu 18.04上安装MySQL的方法

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

介绍

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

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

sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation

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

先决条件

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

  • 通过遵循初始服务器设置指南设置的一个 Ubuntu 18.04 服务器,包括一个具有 sudo 权限的非 root 用户和一个防火墙。

步骤 1 — 安装 MySQL

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

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

sudo apt update

然后安装默认软件包:

sudo apt install mysql-server

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

sudo systemctl start mysql.service

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

步骤 2 — 配置 MySQL

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

运行安全脚本:

sudo mysql_secure_installation

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

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

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

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

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

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

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

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

sudo mysql

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

SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| 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)

在此示例中,您可以看到 root 用户实际上使用 auth_socket 插件进行身份验证。要将 root 帐户配置为使用密码进行身份验证,请运行以下 ALTER USER 命令。确保将 password 更改为您选择的强密码,并注意此命令将更改您在步骤 2 中设置的 root 密码:

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

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

FLUSH PRIVILEGES;

再次检查每个用户使用的身份验证方法,以确认 root 不再使用 auth_socket 插件进行身份验证:

SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| 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)

您可以在此示例输出中看到 root MySQL 用户现在使用密码进行身份验证。确认后,您可以退出 MySQL shell:

exit

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

sudo mysql

然后,创建一个新用户并为其设置强密码:

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

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

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

请注意,在此时,您无需再次运行 FLUSH PRIVILEGES 命令。仅当您使用 INSERTUPDATEDELETE 等语句修改授权表时才需要此命令。因为您创建了一个新用户,而不是修改现有用户,因此在此处不需要 FLUSH PRIVILEGES

完成后,退出 MySQL shell:

exit

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

步骤 4 —— 测试 MySQL

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

systemctl status mysql.service

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

● mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enActive: active (running) since Wed 2018-04-23 21:21:25 UTC; 30min agoMain PID: 3754 (mysqld)Tasks: 28Memory: 142.3MCPU: 1.994sCGroup: /system.slice/mysql.service└─3754 /usr/sbin/mysqld

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

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

sudo mysqladmin -p -u root version

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

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 secThreads: 1  Questions: 12  Slow queries: 0  Opens: 115  Flush tables: 1  Open tables: 34  Queries per second avg: 0.006

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

结论

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

  • 实施一些额外的安全措施
  • 重新定位数据目录
  • 使用 SaltStack 管理你的 MySQL 服务器

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

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

相关文章

进阶SpringBoot之 Shiro(2)环境搭建

Spring Boot 创建 Web 项目&#xff0c;pom.xml 导入 Thymeleaf 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency> resources 目录下 templates 包新…

tomcat 相关

使用内置JDK jdk免配置环境变量&#xff0c;内置tomcat里面启动_64位自带1.8jdk tomcat,无需配置环境变量直接启动-CSDN博客 乱码&#xff1a; 打开tomcat文件下的conf文件&#xff0c;打开logging.properties文件&#xff1b; 然后java.util.logging.ConsoleHandler.encod…

WiFi标签注册(电脑版)

安装WiFi-Tool工具 需要windows系统电脑并且有WiFi功能 下载软件安装包&#xff1a;http://a.picksmart.cn:8088/picksmart/app/WiFi-Tool-Setup-V1.0.37.zip 配置操作流程 登录WiFi标签管理系统到设备管理-产品管理&#xff0c;复制“产品ApiKey”参数&#xff0c;打开“WiFi-…

ip地址变化是什么意思?手机地址ip一直变化怎么办

IP地址作为互联网设备的唯一标识&#xff0c;‌其稳定性对于网络连接至关重要。‌然而&#xff0c;‌手机IP地址频繁变动可能带来一系列问题。‌本文将深入探讨IP地址变化的含义、‌IP地址频繁变动的原因&#xff0c;‌以及提供手机地址IP一直变化的有效应对策略。‌ 一、IP地址…

当AI遇上制药:加速跑向未来的快车道,还是布满荆棘的征途?

01 在全球科技领域&#xff0c;AI的崛起无疑掀起了一场变革的风暴&#xff0c;其影响力已渗透至各行各业&#xff0c;促使各领域积极寻求与AI技术的深度融合&#xff0c;以提升效率、创新产品及优化服务。在医疗健康领域&#xff0c;AI与制药的结合自2007年起航&#xff0c;历…

计网_整体概念逻辑简单过一遍

1. 简述四层TCP/IP 网络模型 由于 OSI 模型实在太复杂&#xff0c;提出的也只是概念理论上的分层&#xff0c;并没有提供具体的实现方案。 事实上&#xff0c;我们比较常见&#xff0c;也比较实用的是四层模型&#xff0c;即 TCP/IP 网络模型&#xff0c; 1.1 应用层 在四…

WPF ToolkitMVVM IOC IServiceConllection

用微软自带的 IOC 需要安装 using Microsoft.Extensions.DependencyInjection; using System.Configuration; using System.Data; using System.Windows;namespace WpfApp3 {/// <summary>/// Interaction logic for App.xaml/// </summary>public partial class…

EXO:StandardNode _process_tensor

目录 EXO:StandardNode _process_tensor EXO:StandardNode _process_tensor 这段代码是在处理某种分片(sharding)逻辑时使用的,特别是在处理大型模型或数据处理任务时,这些任务被分割成多个较小的部分(即分片)来并行处理。这里,代码片段关注于根据特定的调试级别(DEBU…

【日常记录-Linux】.tar.xz、.tar.bz2、tar.gz解压

Author&#xff1a;赵志乾 Date&#xff1a;2024-08-30 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 简介 Linux平台下&#xff0c;常见.tar.xz、.tar.bz2、.tar.gz等类型的压缩包。 2. 解压缩说明 2.1 .tar.xz解压缩 .tar.xz压缩包表…

Windows系统安装MySQL

下载MySQL 打开网址MySQL :: Download MySQL Community Server点击图下所示位置Download 进入图下所示界面&#xff0c;点击图下所示位置不登录下载 已下载完成 安装MySQL 将下载好的压缩包解压到一个专门的位置&#xff0c;该软件为绿色版软件&#xff0c;解压即可使用 配置…

若依,前后端分离项目,部署到服务器

1.后端项目用maven打包 正式服的话&#xff0c;测试不用加。 application.yml加上context-path: /prod-api 一定要选择root的ruoyi&#xff0c;他会把你自动打包其他模块的依赖 全部成功。然后去ruoyi-admin拿到这个包&#xff0c;java -jar ruoyi-admin.jar就可以了 将jar上…

VM ware虚拟机下载安装教程

1.安装包下载 目前VM ware官网无法直接下载虚拟机安装包&#xff0c;需要跳转到Broadcom&#xff08;点击此处&#xff09;官网进行下载 点击链接自动进入登录界面&#xff0c;没有注册过可以通过邮箱进行注册&#xff0c;接下来将为您介绍注册流程。 Username即注册邮箱&…

Mac/Linux系统matplotlib中文支持问题

背景 matplotlib是python中最常用的数据可视化分析工具&#xff0c;Mac和Linux系统无中文字体&#xff0c;不支持中文显示&#xff08;希望后续可以改进&#xff09;&#xff0c;需要进行字体的下载和设置才能解决。笔者经过实践&#xff0c;发现Mac系统和Linux系统解决方案略…

raw.githubusercontent.com未能解析” 解决方案

1.操作场景 通过windows11 powershell 下载依赖包 2.报错信息如下 irm : 未能解析此远程名称: raw.githubusercontent.com 所在位置 行:1 字符: 27 & ([scriptblock]::Create((irm "https://win11debloat.raphi.re/"))) ~~~~~~~~~…

SpringBoot SSM vue在线作业考试系统

SpringBoot SSM vue在线作业考试系统 首页 图片轮播 作业信息 通知公告 登录注册 留言板 个人中心 我的收藏 后台管理 登录注册 个人中心 教师信息管理 学生信息管理 学院信息管理 专业信息管理 班级信息管理 作业信息管理 作业提交管理 通知公告管理 试卷管理 试题管理 系统…

【C++ 第十八章】C++11 新增语法(4)

前情回顾&#xff1a; 【C11 新增语法&#xff08;1&#xff09;&#xff1a;1~6 点】 C11出现与历史、花括号统一初始化、initializer_list初始化列表、 auto、decltype、nullptr、STL的一些新变化 【C11 新增语法&#xff08;2&#xff09;&#xff1a;7~8 点】 右值引用和…

如何使用SpringCloudAliBaba技术栈搭建微服务环境

首先创建一个父模块&#xff08;怎么创建应该就不用多说了吧&#xff0c;重点是依赖这些东西&#xff0c;我这里是大致拿出我其中的一个项目做例子&#xff09; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSch…

基于ASO-BP原子探索优化BP神经网络实现数据预测Python实现

本文提出了一种基于ASO算法优化BP神经网络的数据预测方法。通过ASO算法对BP神经网络的权值和阈值进行优化&#xff0c;克服了BP神经网络易陷入局部最优解和对初始权值敏感的缺点。实验结果表明&#xff0c;优化后的BP神经网络在预测精度上得到了显著提升&#xff0c;为数据预测…

Go 语言中的接口详解

Go 语言中的接口详解 接口是 Go 语言中实现多态性和松耦合设计的核心概念之一。通过接口&#xff0c;Go 提供了一种简洁而强大的方式来定义对象之间的行为规范&#xff0c;允许不同类型实现相同的接口方法&#xff0c;进而使得代码更加灵活和可扩展。 什么是接口&#xff1f;…

架构基础 -- Web框架之FastAPI

FastAPI&#xff1a;背景与使用案例介绍 FastAPI的背景 FastAPI是一个现代、快速&#xff08;高性能&#xff09;的Web框架&#xff0c;基于Python 3.7编写&#xff0c;利用Python的类型提示&#xff08;type hints&#xff09;来实现自动生成文档和高效的数据验证。由Sebast…