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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 轻松搭建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,也就是使用空密码

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) : 

成功页面

彩蛋

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

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

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即可

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


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
存储 Ubuntu 关系型数据库
Ubuntu 20.04 卸载与安装 MySQL 5.7 详细教程
该文档提供了在Ubuntu上卸载和安装MySQL 5.7的步骤。首先,通过`apt`命令卸载所有MySQL相关软件包及配置。然后,下载特定版本(5.7.32)的MySQL安装包,解压并安装所需依赖。接着,按照特定顺序安装解压后的deb包,并在安装过程中设置root用户的密码。安装完成后,启动MySQL服务,连接数据库并验证。最后,提到了开启GTID和二进制日志的配置方法。
|
1月前
|
Ubuntu 关系型数据库 MySQL
Ubuntu 安装 MySQL 5.7
Ubuntu 安装 MySQL 5.7
24 0
|
2月前
|
Ubuntu 关系型数据库 MySQL
MySQL5.7在Ubuntu安装[单机软件],第一步登录root,sudo su -
MySQL5.7在Ubuntu安装[单机软件],第一步登录root,sudo su -
|
2月前
|
Ubuntu 关系型数据库 MySQL
Mysql8.0在Ubuntu安装
Mysql8.0在Ubuntu安装
|
3月前
|
Ubuntu 关系型数据库 MySQL
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
49 0
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
|
3月前
|
Ubuntu 关系型数据库 MySQL
【MYSQL】ubuntu下安装数据库
【MYSQL】ubuntu下安装数据库
38 0
|
11天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
13天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
138 11
|
1月前
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!点击阅读原文完成实验就可获得一本日历哦~
|
8天前
|
存储 SQL 关系型数据库
MySQL的安装&数据库的简单操作
本文介绍了数据库的基本概念及MySQL的安装配置。首先解释了数据库、数据库管理系统和SQL的概念,接着详细描述了MySQL的安装步骤及其全局配置文件my.ini的调整方法。文章还介绍了如何启动MySQL服务,包括配置环境变量和使用命令行的方法。最后,详细说明了数据库的各种操作,如创建、选择和删除数据库的SQL语句,并提供了实际操作示例。
49 13
MySQL的安装&数据库的简单操作