目录

前言:学习引入

1、安装注意事项

2、学习建议

3、MySQL 和 MariaDB

核心概念一:它们是什么?

核心概念二:它们如何工作?(“仓库”比喻)

核心概念三:为什么它们如此流行?

MySQL 和 MariaDB 如何选择?

一、首先查看当前云服务器中是否有MySQL或MariaDB服务

详细解释如下:

二、此时我们切换为超级用户

三、然后再停止运行中的MySQL或MariaDB服务

四、检查系统安装包(dpkg -l | grep 名称命令)

1、第一部分:dpkg -l

2、第二部分:| grep 名称

3、命令组合:dpkg -l | grep 名称

4、与 rpm -qa 命令的区别

5、简单总结

6、检查MySQL或MariaDB的系统安装包

详细解释

总结当前状态

五、卸载这些默认安装包

分步讲解

1. dpkg -l

2. grep mysql

3. xargs apt -y remove

整个命令链的流程可以理解为:

一个简单的模拟示例

卸载后的操作

六、获取MySQL官方APT源

1、首先确认系统版本

2、下载MySQL APT配置仓库包(两种方式)

3、安装MySQL APT仓库配置包

4、安装MySQL APT源,对比前后APT源

1. 安装前:查看现有的 APT 源列表

2. 安装 MySQL APT 配置包

3. 更新 APT 缓存

4. 安装后:检查是否添加了 MySQL 的 APT 源

5. (可选)安装 MySQL

5、看看能不能正常工作

详细解释

七、安装mysql服务

八、查看配置文件和数据存储位置

1、查看 MySQL 配置文件位置

2、查看数据文件存储位置

3、查找 MySQL 相关可执行文件的安装位置

1. which mysqld

2. which mysql

这些信息告诉你:

相关的重要命令位置:

我们可以进一步验证:

九、启动和查看 MySQL 服务

1、启动 MySQL 服务

2、查看 MySQL 服务状态

3、设置开机自启

4、查看 MySQL 进程

十、登录方法

1、登录方法一【获取临时密码】

1. 查看密码验证组件

2. 降低密码要求(MySQL 5.7)

3. 卸载密码验证插件

4. 修改 root 密码

MySQL 5.7 vs MySQL 8.0+ 的区别:

MySQL 5.7:

MySQL 8.0+:

2、如果找不到临时密码,尝试方法二【直接登录】(我的这个可以)

3、登录方法三【使用 skip-grant-tables】

4、相较于Centos,Ubuntu的重要区别

5、完成后记得

十一、设置 MySQL 开机启动(可以不设置)

1、设置 MySQL 开机启动

2、重新加载 systemd 配置

3、Ubuntu 与 CentOS 的对比

4、完整的服务管理命令

5、验证设置结果

6、注意

十二、配置 MySQL 配置文件

1、Ubuntu 中 MySQL 配置文件的路径

2、配置字符编码和存储引擎

编辑配置文件:

3、配置完成后重启 MySQL

4、验证配置是否生效

5、重要说明


前言:学习引入

1、安装注意事项

  • 安装和卸载过程中,请全程使用 root 用户操作
  • 安装完成后,普通用户也可以正常使用 MySQL

2、学习建议

  • 初期练习阶段,建议直接使用 root 账户操作 MySQL
  • 先集中精力掌握基本的 MySQL 语句
  • 待熟悉基础操作后,再学习用户管理相关内容
  • 后期可根据实际需求创建普通用户

3、MySQL 和 MariaDB

        我们可以把它们理解为一个非常流行、高效且可靠的“数据管家”。它们是一种关系型数据库管理系统(RDBMS),专门负责帮你存储、管理和获取结构化的数据。

核心概念一:它们是什么?

  • MySQL: 最初由一家瑞典公司开发,后来被 Sun Microsystems 收购,Sun 又被 Oracle(甲骨文)收购。所以现在 MySQL 归 Oracle 所有。它是世界上最流行的开源数据库之一,拥有庞大的用户社区和丰富的生态系统。

  • MariaDB: 由 MySQL 的原始创始人开发。当年 Oracle 收购 MySQL 后,出于对 MySQL 闭源和控制的担忧,MySQL 之父 Michael Widenius 带领团队创建了 MariaDB。MariaDB 被设计为 MySQL 的一个完全兼容的替代品(就像换了发动机但外壳和操作方式完全一样的车)。

简单来说,MariaDB 是 MySQL 的一个分支(Fork),并且目标是保持兼容性,同时加入更多创新和开源承诺。

核心概念二:它们如何工作?(“仓库”比喻)

想象一个巨大的智能仓库:

  1. 数据库(Database): 就是这个仓库本身。你可以在里面建立多个货架区来存放不同类别的货物。

  2. 表(Table): 仓库里的一个货架区。比如,一个“用户信息”区,一个“商品列表”区。

  3. 列(Column): 每个货架区都有固定的货架格,规定了存放货物的属性。例如,在“用户信息”货架区,有“用户名”、“密码”、“邮箱”这几个货架格。这定义了数据的结构

  4. 行(Row): 货架上的一件具体货物。比如,在“用户信息”区的一行,就对应一个真实用户的全部信息(e.g., 用户A,密码123,abc@email.com)。

  5. SQL(结构化查询语言): 你与仓库管理员(MySQL/MariaDB)沟通的指令。你用这种语言告诉管理员:

    • “帮我存一件新货物” (INSERT)

    • “帮我找出所有价格大于100的商品” (SELECT ... WHERE ...)

    • “把用户A的电话号码更新一下” (UPDATE)

    • “把已经下架的商品都扔掉” (DELETE)

核心概念三:为什么它们如此流行?

  1. 开源免费: 社区版可以免费使用和修改,这降低了成本并促进了社区发展。

  2. 性能卓越: 处理速度很快,尤其适合Web应用,能够高效处理大量的读写请求。

  3. 简单易用: 相对于一些大型商业数据库(如Oracle),它更容易安装、学习和使用。

  4. 功能丰富: 支持事务、外键约束、存储过程、触发器等高级功能,能满足绝大多数应用的需求。

  5. 生态强大: 有大量的图形化管理工具(如 phpMyAdmin, MySQL Workbench)、编程语言接口(PHP, Python, Java等)和开源项目(如 WordPress, Magento)都支持它。

  6. 社区支持: 拥有非常活跃的社区,遇到问题很容易找到解决方案。

MySQL 和 MariaDB 如何选择?

对于绝大多数初学者和新项目来说,两者几乎没有区别。它们的语法、命令、接口在基本层面是完全一致的。

  • 选择 MariaDB: 如果你更看重完全的开源精神、由社区主导而非商业公司,或者你使用的Linux发行版(如Debian, CentOS)默认就切换到了MariaDB。

  • 选择 MySQL: 如果你所处的公司或环境历史悠久,一直使用Oracle旗下的MySQL,或者某些特定商业套件(如Oracle自己的产品线)对其有优化和支持。

好消息是:因为你学会了其中一个,就等同于学会了另一个。你的知识和SQL语句可以无缝迁移。


一、首先查看当前云服务器中是否有MySQL或MariaDB服务

ps axj|grep mysql
ps axj|grep mariadb

        根据输入命令的输出结果,可以看到我这个服务器上没有运行中的MySQL或MariaDB服务。MySQL 和 MariaDB 的服务目前都没有启动

详细解释如下:

1、ps axj|grep mysql 这个命令用于查找所有名称中包含 "mysql" 的进程。

  • 输出结果中只有 grep --color=auto mysql 这一行,这恰恰是您刚才运行的 grep 命令本身,而不是一个MySQL服务器进程。

  • 这说明系统进程列表中没有名为 mysql 或 mysqld 的进程在运行。

2、ps axj|grep mariadb 这个命令用于查找所有名称中包含 "mariadb" 的进程。

  • 同样,输出结果中只有 grep --color=auto mariadb 这一行,是您刚才运行的 grep 命令本身。

  • 这说明系统进程列表中没有名为 mariadb 的进程在运行。


二、此时我们切换为超级用户

su -


三、然后再停止运行中的MySQL或MariaDB服务

systemctl stop mysql
systemctl stop mariadb

因为我的云服务器并没有运行中的MySQL或MariaDB服务,所以使用停止服务命令会输出以下结果:

如果有运行中的MySQL或MariaDB服务的话,按照输出提示的步骤走就可以了,停止相关服务后的查看结果如上所示。


四、检查系统安装包(dpkg -l | grep 名称命令)

    dpkg -l | grep 名称 这个在 Debian/Ubuntu 等 Linux 发行版中非常常用的命令组合。这个命令的主要作用是:列出所有已安装的软件包,并通过关键字过滤出你关心的那些。我们可以将这个命令拆解成两个部分来理解:

1、第一部分:dpkg -l

  • dpkg: 是 Debian 包管理系统的基础命令工具,用于安装、卸载、管理和查询 .deb 软件包的信息。

  • -l (小写 L): 是 --list 的缩写。这个选项的作用是列出当前系统上所有已安装的软件包

当我们直接运行 dpkg -l 时,它会输出一个很长的列表,包含成千上万个包。输出的格式通常是这样的:

  • 第一列 (状态标志): 最常见的是 ii

    • 第一个 i: 表示期望状态是“已安装”。

    • 第二个 i: 表示当前状态是“已安装”。

    • 其他状态如 un (未知/未安装), rc (已卸载但配置文件还保留) 等。

  • 第二列 (名称): 软件包的名称。

  • 第三列 (版本): 软件包安装的版本号。

  • 第四列 (架构): 软件包编译的架构,如 amd64arm64all 等。

  • 第五列 (描述): 软件包的简短描述。

2、第二部分:| grep 名称

  • | (管道符): 这是 Linux 命令中一个极其重要的概念。它将前一个命令 (dpkg -l) 的标准输出,作为后一个命令 (grep 名称) 的标准输入。简单说,就是把 dpkg -l 的结果传递给 grep 去处理。

  • grep: 是一个强大的文本搜索工具,它会在给定的文本中搜索匹配指定模式(字符串或正则表达式)的行。

  • 名称: 这是你希望搜索的关键字。它可以是一个完整的软件包名,也可以是名字的一部分。

3、命令组合:dpkg -l | grep 名称

dpkg -l | grep 名称

将两者结合起来,这个命令的工作流程就是:

  1. dpkg -l 先执行,生成一个包含所有已安装软件包的列表。

  2. 这个列表通过管道 | 被送给 grep 命令。

  3. grep 命令在这个长长的列表中,逐行搜索包含“名称”这个关键字的行。

  4. 最终,只有那些包含“名称”的行才会被显示在终端上。

这样做的巨大好处是:你不需要在成千上万个软件包中用眼睛去慢慢找,grep 会帮你瞬间完成筛选。

4、与 rpm -qa 命令的区别

        需要注意的是,rpm -qa 只适用于基于 RPM 包管理系统的发行版(如 Red Hat, CentOS, Fedora)。而dpkg -l 命令适用于基于 Debian 的发行版(如 Ubuntu, Debian)。

5、简单总结

命令作用适用系统
rpm -qa | grep 名称查询所有已安装的RPM包,并过滤Red Hat, CentOS, Fedora等
dpkg -l | grep 名称列出所有已安装的DEB包,并过滤Ubuntu, Debian等

        所以,在ECS服务器上,我们需要先确定系统是CentOS(用 rpm)还是Ubuntu(用 dpkg),然后选择正确的命令来检查软件包是否安装。

6、检查MySQL或MariaDB的系统安装包

dpkg -l | grep mysql
dpkg -l | grep mariadb

详细解释

dpkg -l | grep mysql 这个命令的作用是:

  1. dpkg -l:列出所有通过 apt 或 dpkg 方式安装的软件包。

  2. grep mysql:在上面的完整列表中,过滤出包含 "mysql" 关键词的行。

没有任何输出,意味着:在系统所有已安装的软件包中,没有任何一个软件包的名称里包含 "mysql"。因此,MySQL服务器和相关客户端、库等都没有安装。同理,dpkg -l | grep mariadb 也没有输出,证明MariaDB也完全没安装。

总结当前状态

  • 进程:之前用 ps 命令查过,没有运行中的MySQL/MariaDB进程。

  • 软件包:现在用 dpkg 命令确认,系统里根本没有安装MySQL/MariaDB软件。

        所以,这台服务器是一个“干净”的环境,需要自行安装所需的数据库。如果你的云服务器上运行该命令有相关的安装包的话,则会列出所有已安装的软件包,否则就会像我这样没有输出内容。


五、卸载这些默认安装包

        如果你的云服务器上运行该命令有相关的安装包的话,则我们库通过以下命令将已安装的软件包(卸载显示出来的mariadb/mysql安装包)一个一个卸载,不过有点慢:

sudo apt remove mariadb
sudo apt remove mysql

我们可以使用下面命令一次性把相关的安装包给卸载掉:

dpkg -l | grep mysql | xargs apt -y remove

这是一个命令链,其最终目的是:卸载所有名称中包含 "mysql" 字样的已安装软件包

        警告!!!这是一个非常危险的操作(想要使用的话前提得要知道会造成什么样的后果),请务必理解其后果后再执行! 它会移除所有匹配的包,可能会破坏依赖这些包的服务或应用程序(例如你的网站数据库)。

分步讲解

这个命令由三个部分通过管道 (|) 连接而成,执行顺序是从左到右:

1. dpkg -l

  • 作用:列出系统上所有已安装的软件包。

  • 输出:一个长长的列表,包含每个包的状态、名称、版本、架构和简短描述。

2. grep mysql

  • 作用:从上一个命令 (dpkg -l) 的输出中,过滤出所有包含 "mysql" 字符串的行。

  • 输出:所有名称或描述中包含 "mysql" 的软件包列表。例如,可能包括:

    • mysql-server-8.0

    • mysql-client-8.0

    • mysql-common

    • libmysqlclient21

    • 等等...

3. xargs apt -y remove

这是最关键和最危险的一步。

  • xargs: 这个命令的作用是将上一个命令的输出(即一系列包名)作为参数传递给后面指定的命令(这里是 apt -y remove)。它相当于把 grep mysql 得到的包名列表,一个一个地放到 apt remove 后面。

  • apt -y remove: 这是执行卸载操作的命令。

    • apt: 高级包管理工具。

    • remove: 子命令,表示卸载软件包。

    • -y 或 --yes: 自动回答 "yes" 以确认所有提示。这是导致命令自动运行、无需确认的关键选项,非常危险。

整个命令链的流程可以理解为:

  1. 获取全部软件包列表 ->

  2. 筛选出所有带"mysql"的 ->

  3. 把这些包名传给 apt 命令并自动执行卸载。

一个简单的模拟示例

假设 dpkg -l | grep mysql 的输出是:

ii  mysql-common-8.0    1:8.0.33-0ubuntu0.22.04.2  amd64        MySQL database common files
ii  mysql-server-8.0    1:8.0.33-0ubuntu0.22.04.2  amd64        MySQL database server

xargs 会获取这两行文本,并从中提取出包名(通常是每行的第二个字段),然后构造出这样的命令并执行:

apt -y remove mysql-common-8.0 mysql-server-8.0

        同理,mariadb也是一样的卸载操作,可以一次性的卸载相关的安装包!!!(后面只讲解mysql的使用流程,mariadb也是同理的,具体步骤可以上面查相关操作)

卸载后的操作

ls /etc/mysql/my.cnf
ls /var/lib/mysql

        第二个命令一般在卸载后使用,会列出一些安装包的残留文件,这是正常的。如果我们在卸载前需要这些配置文件的话,我们可以备份出来!!!下面是我的云服务器的情况,因为本来就没有相关的安装包,所以也就都是空的,毋容置疑。


六、获取MySQL官方APT源

1、首先确认系统版本

cat /etc/os-release

2、下载MySQL APT配置仓库包(两种方式)

前提注意:最好安装和自己系统一致的MySQL版本,否则可能会存在软件兼容性问题

访问MySQL :: Download MySQL APT Repository选择适合您Ubuntu/Debian版本的配置包。

或者直接使用wget下载(以下以我的Ubuntu 20.04为例):

wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb

3、安装MySQL APT仓库配置包

我以在官网界面中下载到本地电脑的桌面为例(第一种方式),然后上传到云服务器上:

第一步:创建一个MySQL目录,然后进到这个目录中

第二步:rz命令

这里需要下载一下lrzsz软件包,忘记了该用法的话可以移步到命令章节(我都忘了具体在哪了)

使用rz命令,从本地选中文件上传到云服务器当前目录文件夹中

我们可以看到当前目录中已经出现了下载好的MySQL安装包:

4、安装MySQL APT源,对比前后APT源

1. 安装前:查看现有的 APT 源列表

        在安装之前,先查看你当前的 APT 源列表(通常位于 /etc/apt/sources.list.d/ 目录和 /etc/apt/sources.list),确认没有 MySQL 相关的源。

ls /etc/apt/sources.list.d/
cat /etc/apt/sources.list

1. ls /etc/apt/sources.list.d/ 显示:(空)这个目录是空的,说明还没有任何第三方软件源被添加。

2. cat /etc/apt/sources.list 显示:这里只有 Ubuntu 官方的基础软件源(通过华为云镜像),没有 MySQL 的软件源

当前状态:

  • MySQL APT 源还没有安装

  • 系统中只有基础的 Ubuntu 软件源

  • 你需要先安装 MySQL 的 APT 配置包

2. 安装 MySQL APT 配置包

使用 dpkg 来安装你下载的 .deb 包(确保你当前在包含该文件的目录中):

sudo dpkg -i mysql-apt-config_0.8.34-1_all.deb

        在安装过程中,会弹出一个配置界面,让你选择 MySQL 版本和其他选项。如果你没有特殊需求,直接选择默认选项(OK)即可(通过上下键选择,然后按Enter确定)。

3. 更新 APT 缓存

安装完成后,更新 APT 缓存以获取新的 MySQL 仓库信息:

sudo apt update

4. 安装后:检查是否添加了 MySQL 的 APT 源

再次查看 /etc/apt/sources.list.d/ 目录,应该会多出 MySQL 相关的源文件(例如 mysql.list):

ls /etc/apt/sources.list.d/
cat /etc/apt/sources.list.d/mysql.list

从我们的输出结果可以看到,MySQL APT 源已经成功添加了

解读输出结果:

1. ls /etc/apt/sources.list.d/ 显示:这表示已经创建了 MySQL 的源列表文件。

mysql.list

2. cat /etc/apt/sources.list.d/mysql.list 显示:

文件内容包含多个 deb 和 deb-src 行,指向 MySQL 官方仓库:

  • http://repo.mysql.com/apt/ubuntu/ - MySQL 官方 APT 仓库

  • focal - Ubuntu 20.04 的代号

  • mysql-8.4-lts - MySQL 8.4 LTS 版本

  • mysql-tools - MySQL 工具包

  • mysql-apt-config - 配置包本身

文件开头的注释告诉我们:

"### THIS FILE IS AUTOMATICALLY CONFIGURED ###"
"Use command 'dpkg-reconfigure mysql-apt-config' as root for modifications."

这句话的意思是:

  • 这个文件是自动配置的

  • 如果你想修改 MySQL 的版本或其他配置选项,可以使用命令:

    sudo dpkg-reconfigure mysql-apt-config

    这会重新打开安装时看到的配置界面,让你选择不同的 MySQL 版本或其他选项。

5. (可选)安装 MySQL

如果你需要立即安装 MySQL,可以运行,但是我们不急,先放着:

sudo apt install mysql-server

5、看看能不能正常工作

使用下面的命令我们可以查看可用的 MySQL 相关包:

apt list | grep mysql

        输出相关的可用的 MySQL 相关包会刷屏,因为很多!!!输出的第一句话的意思是:"警告:apt 没有稳定的命令行界面。在脚本中使用时要小心。"

详细解释

  1. 这不是错误,只是一个警告信息(不用管)

  2. apt 命令的设计初衷是给人交互使用的,不是给脚本编程使用的

  3. apt 的命令行选项和输出格式可能会在不同版本中发生变化,不适合用于自动化脚本

  4. 对于脚本编程,应该使用 apt-get 命令,它有稳定的接口

完成以上的动作后,当前目录中的.deb文件我们可以删除掉了,当然也可以不删除:


七、安装mysql服务

我们使用下面的命令安装 MySQL 服务器:

sudo apt install mysql-server


八、查看配置文件和数据存储位置

1、查看 MySQL 配置文件位置

ls /etc/mysql/

2、查看数据文件存储位置

# Ubuntu 的 MySQL 数据默认存储在 /var/lib/mysql
sudo ls /var/lib/mysql

3、查找 MySQL 相关可执行文件的安装位置

which 命令用于查找 MySQL 相关可执行文件的安装位置,如下:

1. which mysqld

✅ 作用:查找 MySQL 服务器守护进程的安装位置
📍 位置/usr/sbin/mysqld - 这是 MySQL 服务器的主程序

2. which mysql

✅ 作用:查找 MySQL 客户端命令的安装位置
📍 位置/usr/bin/mysql - 这是 MySQL 命令行客户端工具

这些信息告诉你:

  1. MySQL 已经成功安装在系统中

  2. 服务器程序在 /usr/sbin/mysqld

  3. 客户端程序在 /usr/bin/mysql

  4. 这些是标准的 Ubuntu 安装路径

相关的重要命令位置:

命令路径作用
mysqld/usr/sbin/mysqldMySQL 服务器主程序
mysql/usr/bin/mysqlMySQL 命令行客户端
mysqladmin/usr/bin/mysqladminMySQL 管理工具
mysqldump/usr/bin/mysqldumpMySQL 备份工具

我们可以进一步验证:

# 查看 MySQL 服务器版本
/usr/sbin/mysqld --version# 查看 MySQL 客户端版本
/usr/bin/mysql --version# 或者直接使用(因为已经在 PATH 中)
mysql --version
mysqld --version

这些输出确认了 MySQL 已经正确安装并在系统的可执行路径中!


九、启动和查看 MySQL 服务

1、启动 MySQL 服务

sudo systemctl start mysql.service

或者简写:

sudo systemctl start mysql

2、查看 MySQL 服务状态

sudo systemctl status mysql

3、设置开机自启

sudo systemctl enable mysql

4、查看 MySQL 进程

ps axj | grep mysqld

或者更详细地查看:

ps aux | grep mysql

注意:在 Ubuntu 中,MySQL 的服务名称是 mysql 而不是 CentOS 中的 mysqld这是因为在 Ubuntu 中,服务名称通常与软件包名称保持一致。

为了查看MySQL服务存在,我们也可以使用下面的命令(后面会学到)查看MySQL的网络服务端口号:

netstat -nltp


十、登录方法

1、登录方法一【获取临时密码】

# 查看临时密码(Ubuntu 中日志文件位置可能不同)
sudo grep 'temporary password' /var/log/mysql/error.log

或者尝试:

sudo cat /var/log/mysql/error.log | grep "temporary password"

不过一般现在的MySQL已经不支持这种方式了(我的就不行),如果你的使用这种方法可行的话,你就可以使用临时密码登录:

mysql -uroot -p

然后我们如果想改密码的话可以根据下面简单操作一下(了解即可,可以先不修改密码):

-- 首先查看当前的密码验证组件(MySQL 8.0+ 方式不同)
SHOW VARIABLES LIKE 'validate_password%';-- 如果存在验证插件,先降低要求(MySQL 5.7)
SET GLOBAL validate_password_policy = 0;
SET GLOBAL validate_password_length = 1;-- 或者直接卸载验证插件(如果需要)
UNINSTALL PLUGIN validate_password;-- 修改 root 密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES;

1. 查看密码验证组件

SHOW VARIABLES LIKE 'validate_password%';

作用:查看当前 MySQL 的密码验证策略配置

输出示例

Variable_nameValue
validate_password_check_user_nameOFF
validate_password_dictionary_file
validate_password_length8
validate_password_mixed_case_count1
validate_password_number_count1
validate_password_policyMEDIUM
validate_password_special_char_count1

关键参数说明

  • validate_password_policy:密码策略强度(LOW, MEDIUM, STRONG)

  • validate_password_length:密码最小长度

  • validate_password_number_count:至少需要的数字数量

  • validate_password_mixed_case_count:至少需要的大小写字母数量

  • validate_password_special_char_count:至少需要的特殊字符数量

2. 降低密码要求(MySQL 5.7)

SET GLOBAL validate_password_policy = 0;
SET GLOBAL validate_password_length = 1;

作用

  • 第一句:将密码策略设为最低(0=LOW,1=MEDIUM,2=STRONG)

  • 第二句:将密码最小长度设为1

注意:这样设置后,密码要求会变得非常宽松,适合测试环境。

3. 卸载密码验证插件

UNINSTALL PLUGIN validate_password;

作用:完全移除密码复杂度验证功能

使用场景

  • 当你觉得密码验证太麻烦时

  • 仅推荐在测试环境中使用

  • 生产环境不建议这样做,因为会降低安全性

4. 修改 root 密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES;

作用

  • 第一句:修改 root 用户的密码

  • 第二句:刷新权限,使修改立即生效

MySQL 5.7 vs MySQL 8.0+ 的区别:

MySQL 5.7:

-- 修改密码
SET PASSWORD = PASSWORD('你的新密码');
-- 或
UPDATE mysql.user SET authentication_string = PASSWORD('你的新密码') WHERE User = 'root';

MySQL 8.0+:

-- 修改密码(推荐方式)
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';-- 或者先创建用户再设置密码
CREATE USER 'root'@'localhost' IDENTIFIED BY '密码';

2、如果找不到临时密码,尝试方法二【直接登录】(我的这个可以)

        最新版 MySQL 安装后,root 账户默认没有临时密码。你可以直接尝试以空密码方式登录客户端。 首先使用下面登录命令,然后弹出输入密码提示,直接回车(Enter)就可以登录了:

# 新版本 MySQL 可能没有密码
sudo mysql -u root

登录成功后的MySQL服务是这样的,如下(我的这个可以):

输入quit可以退出MySQL登录:

或者:

mysql -u root -p
# 直接按回车(如果密码为空)

3、登录方法三【使用 skip-grant-tables】

如果以上方法都不行,我们可以尝试下面的方法:

# 首先要停止 MySQL 服务,否则不会生效
sudo systemctl stop mysql
# 编辑 MySQL 配置文件(Ubuntu 中的路径不同)
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

在 [mysqld] 下面添加:

skip-grant-tables

然后:

# 重启 MySQL 服务
sudo systemctl start mysql# 无需密码登录
sudo mysql -u root

登录后重置密码(重置密码的操作可以上网查阅,因为太多太杂了):(经过之前我们的登录信息,可以看到我们的版本是MySQL 8.0+,我们就使用下面8.0+的操作)

-- 先刷新权限
FLUSH PRIVILEGES;-- 修改密码(MySQL 5.7 和 8.0+ 语法不同)
-- MySQL 5.7:
UPDATE mysql.user SET authentication_string = PASSWORD('你的新密码') WHERE User = 'root';-- MySQL 8.0+:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';FLUSH PRIVILEGES;
  • FLUSH PRIVILEGES; - 刷新系统权限

  • 执行具体的密码修改语句(语法因版本而异)

  • FLUSH PRIVILEGES; - 再次刷新系统权限,使更改生效

4、相较于Centos,Ubuntu的重要区别

  1. 日志文件路径:Ubuntu 中通常是 /var/log/mysql/error.log

  2. 配置文件路径:Ubuntu 中通常是 /etc/mysql/mysql.conf.d/mysqld.cnf

  3. 服务名称:Ubuntu 中是 mysql 而不是 mysqld

5、完成后记得

# 移除 skip-grant-tables 选项
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf# 重启服务
sudo systemctl restart mysql

        在 Ubuntu 上,新安装的 MySQL 通常 root 用户是通过 auth_socket 插件认证的,可以直接用 sudo mysql 登录而不需要密码,如下:


十一、设置 MySQL 开机启动(可以不设置)

1、设置 MySQL 开机启动

sudo systemctl enable mysql

2、重新加载 systemd 配置

sudo systemctl daemon-reload

3、Ubuntu 与 CentOS 的对比

操作CentOSUbuntu
设置开机启动systemctl enable mysqldsudo systemctl enable mysql
重新加载配置systemctl daemon-reloadsudo systemctl daemon-reload
服务名称mysqldmysql

4、完整的服务管理命令

# 设置开机启动
sudo systemctl enable mysql# 禁用开机启动
sudo systemctl disable mysql# 查看是否已设置开机启动
sudo systemctl is-enabled mysql# 重新加载 systemd 配置(通常在修改服务文件后需要)
sudo systemctl daemon-reload

5、验证设置结果

# 检查服务状态
sudo systemctl status mysql

# 检查是否启用开机启动
systemctl list-unit-files | grep mysql

6、注意

  • 在 Ubuntu 中,服务名称是 mysql 而不是 CentOS 中的 mysqld

  • 使用 sudo 权限是因为修改系统服务需要管理员权限(root)

  • daemon-reload 通常在修改服务配置文件后才需要,单纯启用服务通常不需要

建议:即使标记为"可以不设",在生产环境中建议设置开机启动,确保服务器重启后 MySQL 能自动恢复服务。但是云服务器是永远都不关闭的,所以这个命令设不设置都没问题。


十二、配置 MySQL 配置文件

1、Ubuntu 中 MySQL 配置文件的路径

# 主要的配置文件路径
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 或者查看所有配置文件
ls /etc/mysql/

2、配置字符编码和存储引擎

编辑配置文件:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

在 [mysqld] 部分添加以下配置:

3、配置完成后重启 MySQL

sudo systemctl restart mysql

netstat -nltp

我们使用上面的命令查看发现端口号变成了3306:

4、验证配置是否生效

# 登录 MySQL
mysql -u root -p

# 查看字符集设置
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';

# 查看存储引擎
SHOW VARIABLES LIKE 'default_storage_engine';

5、重要说明

  1. 使用 utf8mb4 而不是 utf8,因为 utf8mb4 支持完整的 Unicode(包括表情符号)

  2. Ubuntu 中配置文件是分散的,主要修改 mysqld.cnf

  3. 配置完成后必须重启 MySQL 服务才能生效

  4. 建议同时配置服务器端和客户端的字符集

这样配置后,你的 MySQL 数据库就能正确支持中文和其他 Unicode 字符了。

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

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

相关文章

BizDevOps 是什么?如何建设企业 BizDevOps 体系

在数字经济加速渗透的今天,企业数字化转型已从 “技术升级” 转向 “价值重构”,单纯的 IT 研发或业务优化已难以适应市场快速变化。业务研发运营一体化(BizDevOps)作为打通 “业务 - 技术 - 运维” 协同壁垒的核心模式&#xff0…

Mac菜单栏综合工具FancyTool更新啦

本次更新聚焦「轻量体验」深度优化:不仅重构了 CPU 占用逻辑与系统唤醒机制,让后台运行更高效;更让动画交互全程保持丝滑流畅,资源消耗却低到近乎无感 —— 哪怕它常驻菜单栏,你也几乎察觉不到它的存在,既不…

ARM汇编 led

1.相关介绍本次用的开发板是IMX6ULLCPU:NXP i.MX 6ULL Cortex-A7单核处理器,主频 528MHz(工业级) 或 800MHz(商业级)467, GBA封装内存:512MB DDR3L RAM,支持高速数据存取。存储&…

弹窗分页保留其他页面勾选的数据(vue)

如图所示,这是个常见的多选todolist不过这里多了个要求,弹窗上下页面切换的时候需要保留勾选结果这其实也不难,但是如果每次都手动写一遍却有点恼人,这次捋一下思路,并把核心代码记录一下,方便下次翻找核心…

分享:一种为蓝牙、WIFI、U段音频发射设备提供ARC回传数字音频桥接功能的方案

随着智能电视、流媒体设备的普及,用户对高质量音频输出的需求激增。为解决多设备协同、无线化传输及ARC高保真音频传输的痛点,纳祥科技推出HDMI ARC音频转换方案:HDMI ARC音频转光纤/同轴/I2S/左右声道,桥接无线音频发射设备&…

在WPF项目中使用阿里图标库iconfont

使用阿里图标库的步骤: 1。从阿里图标库官方网站上下载图标。 2。把阿里图标库(WPF中支持.ttf字体文件)引入 3。在App.xaml中添加图标的全局样式。推荐在此处添加全局样式,为了保证图标可以在所有窗体中使用。 代码如下&#x…

vue3项目启动流程讲解

Vue 3 项目启动流程详解Vue 3 项目的启动流程相比 Vue 2 有了显著变化,采用了新的应用实例创建方式和组合式 API。下面我将详细讲解 Vue 3 项目的启动过程,并提供一个可视化演示。实现思路创建 Vue 3 应用实例配置根组件和必要的插件挂载应用到 DOM展示启…

【C++】LLVM-mingw + VSCode:Windows 开发攻略

LLVM-mingw 是一个基于 LLVM 项目的开源工具链,用于在类 Unix 系统(如 Linux 或 macOS)上为 Windows 平台交叉编译应用程序,它结合了 LLVM 编译器基础设施(包括 Clang C/C/Objective-C 编译器和 LLD 链接器&#xff0c…

AI内容标识新规实施后,大厂AI用户协议有何变化?(六)科大讯飞

科大讯飞也是国产老将,当年OpenAI横空出世,国内唯有文心和星火能与之一战,早期效果感觉甚至是优于文心的,只是后面再也没有什么大动静出来。讯飞也算大厂了,但跟百度阿里这些老牌互联网门阀相比,还是不够持…

Error: MiniProgramError{“errMsg“:“navigateTo:fail webview count limit exceed“}

这个错误 "navigateTo:fail webview count limit exceed" 是微信小程序中常见的页面栈溢出问题,原因是微信小程序对页面栈深度有默认限制(通常为10层),当使用 navigateTo 连续跳转页面导致页面栈超过限制时就会触发。解…

少即是多:从 MPTCP 看优化干预的边界

“对待端到端传输,信息不足就要少干预,越干预越糟糕”,这是我的信条,这次再来说说 MPTCP。 Linux 内核 MPTCP 最好的调度算法就是 default 算法,没有之一,因为它以代价最小,最自然的方式做到了保…

“开源AI智能名片链动2+1模式S2B2C商城小程序”在直播公屏引流中的应用与效果

摘要:本文聚焦于直播公屏引流场景,探讨“开源AI智能名片链动21模式S2B2C商城小程序”如何通过技术赋能与模式创新,重构直播电商的流量获取与转化路径。研究结合案例分析与实证数据,揭示该方案在提升用户互动、优化供应链管理、降低…

基于大数据挖掘的药品不良反应知识整合与利用研究

标题:基于大数据挖掘的药品不良反应知识整合与利用研究内容:1.摘要 随着医疗数据的爆炸式增长,大数据挖掘技术在医疗领域的应用日益广泛。本研究旨在利用大数据挖掘技术对药品不良反应知识进行整合与利用,以提高药品安全性监测和管理水平。通过收集多源异…

国产时序数据库选型指南-从大数据视角看透的价值

摘要:大数据时代时序数据库崛起,工业物联网场景下每秒百万级数据点写入成为常态。Apache IoTDB凭借单节点1000万点/秒的写入性能、毫秒级查询响应和20:1超高压缩比脱颖而出,其树形数据模型完美适配工业设备层级结构。相比传统数据库&#xff…

教你使用服务器如何搭建数据库

数据库是存储和管理数据的核心组件,无论是网站、应用还是企业系统,都离不开数据库的支持。本文将以 莱卡云服务器 为例,教你如何快速搭建常用数据库服务。一、准备工作服务器环境推荐操作系统:Ubuntu 20.04 / Debian 11 / CentOS …

西门子 S7-200 SMART PLC 核心指令详解:从移位、上升沿和比较指令到流水灯控制程序实战

对于 PLC 初学者来说,“流水灯” 是绕不开的经典入门案例 —— 它看似简单,却浓缩了 PLC 编程的核心逻辑:初始化、时序控制、指令应用与状态判断。今天我们就以 S7-200 SMART 为例,逐行拆解一段 8 位流水灯控制程序,带…

P4342 [IOI 1998] Polygon -普及+/提高

P4342 [IOI 1998] Polygon 题目描述 题目可能有些许修改,但大意一致。 Polygon 是一个玩家在一个有 nnn 个顶点的多边形上玩的游戏,如图所示,其中 n4n 4n4。每个顶点用整数标记,每个边用符号 (加)或符号 *…

枚举算法和排序算法能力测试

枚举算法题目 1&#xff1a;找出 1-20 中既是偶数又是 3 的倍数的数题目描述&#xff1a;小明想找出 1 到 20 中既能被 2 整除又能被 3 整除的数字&#xff0c;帮他列出来吧。 代码&#xff1a;cpp运行#include <iostream> using namespace std; int main() {int a;for (…

大数据电商流量分析项目实战:Hadoop初认识+ HA环境搭建(二)

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;大数据、Java、测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/…

【Linux】Linux进程概念(上)

一、冯诺依曼体系结构我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器。它们大部分都遵守冯诺依曼体系。截至目前&#xff0c;我们所认识的计算机&#xff0c;都是由一个个硬件组件组成。输入单元&#xff1a;键盘、鼠标、扫描仪、写板等中央处…