轻松搭建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
相关文章
|
1月前
|
Ubuntu 关系型数据库 MySQL
ubuntu使用aliyun源+mysql删除有外键约束的数据+查看特定目录的大小
ubuntu使用aliyun源+mysql删除有外键约束的数据+查看特定目录的大小
34 4
|
1月前
|
Ubuntu 关系型数据库 MySQL
Ubuntu 安装mysql和简单操作
Ubuntu 安装mysql和简单操作
165 0
|
3月前
|
Ubuntu 关系型数据库 MySQL
Ubuntu 安装 MySQL 5.7
Ubuntu 安装 MySQL 5.7
56 0
|
4月前
|
Ubuntu 关系型数据库 MySQL
MySQL5.7在Ubuntu安装[单机软件],第一步登录root,sudo su -
MySQL5.7在Ubuntu安装[单机软件],第一步登录root,sudo su -
|
4月前
|
Ubuntu 关系型数据库 MySQL
Mysql8.0在Ubuntu安装
Mysql8.0在Ubuntu安装
|
5月前
|
Ubuntu 关系型数据库 MySQL
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
71 0
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
|
5月前
|
Ubuntu 关系型数据库 MySQL
【MYSQL】ubuntu下安装数据库
【MYSQL】ubuntu下安装数据库
43 0
|
23天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
56 3
Mysql(4)—数据库索引
|
8天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
45 2
|
11天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
52 4