【MySQL】1. MySQL安装

【MySQL】1. MySQL安装

目录

1.安装MySQL

(默认安装 Ubuntu22.04 官方源中的 MySQL 8.0 版本,最稳定且推荐):

第一步:更新 Ubuntu 系统软件源

首先登录 Ubuntu22.04(桌面版或服务器版均可),打开终端(桌面版可通过Ctrl+Alt+T快速调出),执行更新命令,确保系统软件包列表最新,避免安装依赖冲突:

sudoapt update sudoapt upgrade -y # 可选,升级已安装的软件包,提升系统稳定性

执行时会提示输入当前用户的密码(输入时终端不显示明文,输入完成回车即可),sudo表示以管理员权限执行命令。

第二步:安装 MySQL 服务器

Ubuntu22.04 的官方软件源中已包含 MySQL 服务器包,直接通过apt命令安装即可,命令如下:

sudoaptinstall mysql-server -y 

安装过程无需手动干预,系统会自动下载、解压并配置 MySQL 的基础运行环境,包括创建 MySQL 系统用户、生成默认配置文件等。

第三步:安全初始化配置 MySQL(关键步骤)

MySQL 安装完成后,默认安全性较低(如允许匿名用户登录、无密码验证等),需通过官方提供的mysql_secure_installation脚本进行安全配置,执行命令:

sudo mysql_secure_installation 

执行后会进入交互式配置流程,按以下步骤逐一操作:

  1. 是否启用 MySQL 密码验证组件(VALIDATE PASSWORD COMPONENT)提示:Would you like to setup VALIDATE PASSWORD component?输入y(是),回车(该组件用于校验密码强度,提升安全性,推荐启用)。
  2. 设置密码强度级别提示:There are three levels of password validation policy:可选 3 个级别:0(低,仅需密码长度≥8)、1(中,需包含数字、小写字母、大写字母 / 特殊字符)、2(高,需包含数字、大小写字母、特殊字符且不能包含用户名 / 常见字符串)。输入对应数字(推荐1,兼顾安全性和易用性),回车。
  3. 设置 MySQL root 用户密码提示:Please set the password for root here.输入你要设置的 root 密码(建议符合强度要求,如Root@123456),回车,然后再次输入相同密码确认,回车。
  4. 删除匿名用户提示:Remove anonymous users?输入y,回车(匿名用户存在安全风险,禁止匿名登录)。
  5. 禁止 root 用户远程登录提示:Disallow root login remotely?先输入y,回车(默认禁止 root 远程登录,如需远程连接,后续可单独配置专用用户,更安全)。
  6. 删除测试数据库(test)提示:Remove test database and access to it?输入y,回车(test 数据库为默认测试用,无实际业务用途,删除可减少安全隐患)。
  7. 刷新权限表,使配置生效提示:Reload privilege tables now?输入y,回车(立即刷新 MySQL 的权限配置,无需重启服务即可生效)。
Disallow root login remotely? 这个问题选择y还是n

答:推荐选择 y(禁止 root 用户远程登录)

第四步:验证 MySQL 服务运行状态

MySQL 安装完成后会自动启动,并设置为开机自启,可通过以下命令验证服务是否正常运行:

# 查看MySQL服务状态sudo systemctl status mysql 

若输出结果中包含active (running)(绿色字体),说明 MySQL 服务已正常启动。

补充相关服务管理命令(后续可按需使用):

# 启动MySQL服务(若未启动)sudo systemctl start mysql # 停止MySQL服务sudo systemctl stop mysql # 重启MySQL服务(配置修改后需生效时使用)sudo systemctl restart mysql # 设置MySQL开机自启(默认已开启,可再次确认)sudo systemctl enable mysql 

第五步:登录 MySQL 数据库,验证安装结果

Ubuntu22.04 中安装的 MySQL 8.0,默认对本地root用户采用auth_socket认证方式(而非密码认证),因此本地登录有两种方式:

方式 1:无需密码,直接以管理员身份登录(推荐本地操作)

sudo mysql -u root 

执行后直接进入 MySQL 的命令行界面(提示符变为mysql>),表示登录成功。

方式 2:通过密码登录(需修改 root 用户认证方式)

若想通过mysql -u root -p输入密码登录,需先修改 root 用户的认证插件为mysql_native_password,步骤如下:

  1. 先通过方式 1 登录 MySQL 命令行,执行以下 SQL 语句(替换'你的root密码'为第三步设置的密码):
ALTERUSER'root'@'localhost' IDENTIFIED WITH mysql_native_password BY'你的root密码';-- 刷新权限,使修改生效 FLUSH PRIVILEGES;
  1. 执行exit;退出 MySQL 命令行,然后通过密码登录:
mysql -u root -p 
  1. 输入第三步设置的 root 密码,回车即可登录 MySQL 命令行。

验证登录成功

进入 MySQL 命令行后,可执行简单 SQL 语句验证功能正常:

-- 查看MySQL版本SELECT VERSION();-- 查看所有数据库SHOWDATABASES;

执行后会返回对应结果,说明 MySQL 运行正常,安装完成。

总结

  1. 核心流程:更新软件源 → 安装mysql-server → 安全初始化mysql_secure_installation → 验证服务与登录。
  2. 关键注意点:Ubuntu22.04 的 MySQL 8.0 默认采用auth_socket本地认证,密码登录需修改认证插件。
  3. 远程访问需配置:绑定 0.0.0.0 + 创建远程用户 + 开放 3306 端口 + 重启 MySQL。
  4. 验证标准:能进入mysql>命令行并执行 SQL 语句,即为安装成功。

2. 相关配置

2.1 MySQL 配置文件核心存放位置

Ubuntu 22.04 中的 MySQL 8.0,核心配置文件(服务端配置)/etc/mysql/mysql.conf.d/mysqld.cnf,所有关于 MySQL 服务端的配置(端口、数据目录、编码、存储引擎等)都在这个文件中修改。

补充说明:

  1. 全局配置文件 /etc/mysql/my.cnf:该文件通常不直接编辑,它会通过 !includedir 指令包含其他目录下的配置文件(包括 mysql.conf.d 目录),起到统一整合配置的作用。
  2. 编辑配置文件需要管理员权限,推荐使用 nanovim 编辑,例如:sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

2.2 配置修改

2.2.1 推荐修改配置

[mysqld]# 1. 端口号 port =3306# 2. 数据目录 datadir =/var/lib/mysql # 3. Socket文件(默认) socket =/var/run/mysqld/mysqld.sock # 4. 完整UTF-8编码配置character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci # 5. 默认存储引擎default-storage-engine=InnoDB# 以下为文件原有默认配置,保留即可,无需修改 pid-file=/var/run/mysqld/mysqld.pid user= mysql # ... 其他原有配置

2.2.2 配置修改后的后续操作

  1. 保存配置并退出编辑
    • 若使用 nano 编辑:按 Ctrl+O 保存,按 Ctrl+X 退出。
    • 若使用 vim 编辑:按 Esc,输入 :wq 回车保存退出。

验证配置是否生效(登录 MySQL 命令行执行以下 SQL)

-- 查看端口、编码、存储引擎等配置信息SHOW VARIABLES LIKE'port';SHOW VARIABLES LIKE'datadir';SHOW VARIABLES LIKE'character_set_server';SHOW VARIABLES LIKE'default_storage_engine';

输出结果与你配置的内容一致,即表示配置生效。

重启 MySQL 服务,使配置生效

sudo systemctl restart mysql 

验证配置语法(避免语法错误导致服务无法启动)

sudo mysqld --help --verbose |grep -E 'port|datadir|character-set-server'

若输出无报错,且能看到你配置的参数值,说明语法无误。

总结:

  1. 核心配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf[mysqld] 节点下修改)。
  2. 5 项配置核心:端口 3306、数据目录/var/lib/mysql、socket 默认保留、编码utf8mb4、存储引擎InnoDB
  3. 关键步骤:修改后重启 MySQL 服务,通过 SQL 语句验证配置是否生效。
  4. 编码避坑:MySQL 中优先使用 utf8mb4 而非 utf8,兼容完整标准 UTF-8。

3. 相关问题

在/var/lib/mysql中有binlog.000095类似这种文件,从1到100多,这是什么文件?

/var/lib/mysql 目录下 binlog.000095 这类序号递增文件的含义,其实这些文件是 MySQL 的二进制日志文件(Binary Log,简称 binlog),是 MySQL 中非常重要的日志类型。binlog 主要记录了 MySQL 中所有对数据库数据产生修改的操作(增、删、改,即 DML 操作;以及建库、建表等 DDL 操作),不会记录查询操作(如 SELECTSHOW)。

正确的 binlog 删除方式(推荐 2 种,禁止直接 rm)

方式 1:配置自动过期清理(推荐,长期省心,无人工失误风险)

这是最优解,通过 MySQL 配置自动清理过期 binlog,无需手动干预,且会自动更新binlog.index索引文件,步骤如下:

  1. 生效后,MySQL 会自动检测并清理超过 7 天的 binlog 文件,且同步更新binlog.index,安全无风险。

保存退出,重启 MySQL 服务使配置生效:

sudo systemctl restart mysql 

[mysqld]节点下添加过期清理配置(以保留 7 天为例):

# MySQL 8.0 推荐配置(单位:秒,604800秒=7天) binlog_expire_logs_seconds = 604800 
补充:若为 MySQL 5.7,可配置expire_logs_days = 7(单位:天),MySQL 8.0 也兼容该配置,但优先推荐binlog_expire_logs_seconds(精度更高)。

编辑 MySQL 配置文件/etc/mysql/mysql.conf.d/mysqld.cnf

sudonano /etc/mysql/mysql.conf.d/mysqld.cnf 

方式 2:通过 MySQL 命令手动清理(规范操作,适合临时清理)

若需要临时清理部分 binlog 文件,必须通过 MySQL 内置命令执行(而非rm),命令会自动更新binlog.index,步骤如下:

  1. 登录 MySQL 命令行(sudo mysql -u root)。
  2. 执行完成后,退出 MySQL 命令行,可通过cat /var/lib/mysql/binlog.index验证,被删除的 binlog 文件名已从索引文件中移除。

执行以下清理命令(二选一,谨慎操作):

-- 方式A:删除所有序号小于 binlog.000095 的binlog文件(保留 binlog.000095 及以后的文件)PURGEBINARY LOGS TO'binlog.000095';-- 方式B:删除2026-01-01 00:00:00 之前生成的所有binlog文件(替换为你的目标时间)PURGEBINARY LOGS BEFORE '2026-01-01 00:00:00';

…过云雨-ZEEKLOG博客

Read more

数据结构中的栈与队列:原理、实现与应用

数据结构中的栈与队列:原理、实现与应用

前言:栈和队列是计算机科学中两种最基础的线性数据结构,它们的独特操作规则和广泛的应用场景使其成为每一位开发者必须掌握的核心知识。本文将通过生活案例、代码实现和实际应用场景,带您深入理解这两种数据结构的精髓。 1.栈(Stack) 基本定义 栈是一种受限的线性表,仅允许在同一端(栈顶)进行数据插入(push)和删除(pop)操作。其核心特性遵循LIFO(后进先出)(Last In First Out)原则,即后进入的元素优先被访问。 LIFO原则后进先出(Last In First Out):最后入栈的元素总是最先出栈入栈(Push):将新元素放入栈顶出栈(Pop):移除并返回栈顶元素 核心机制 * 单端操作:所有操作集中在栈顶完成 * 动态指针:通过栈顶指针(top)实时跟踪最新元素位置 * 操作限制:禁止直接访问中间元素,必须按序操作 * 空间管理:顺序栈需预判容量,链式栈动态扩展但需额外指针空间 2.

By Ne0inhk
HDFS核心组件深度解析:分布式文件系统的架构基石

HDFS核心组件深度解析:分布式文件系统的架构基石

HDFS核心组件深度解析:分布式文件系统的架构基石 * 引言:HDFS——大数据的存储基石 * 一、HDFS架构全景 * 1.1 主从架构设计 * 1.2 核心组件概览 * 二、NameNode:HDFS的"大脑" * 2.1 核心职责 * 2.2 元数据存储结构 * 2.3 内存与持久化 * 2.4 单点故障问题 * 三、DataNode:HDFS的"数据仓库" * 3.1 核心职责 * 3.2 工作流程 * 3.3 数据存储结构 * 四、Secondary NameNode:NameNode的&

By Ne0inhk
Python详细安装与环境搭建

Python详细安装与环境搭建

一. 下载python python官网:https://www.python.org/ 按照图片所示进行下载         其中, x86 的为 32 位安装包,x86-64 为 64 位安装包。Stable Releases为稳定版本,Pre-releases为预发行版。executable installer为完整的安装包,下载完即可脱网安装;web-based installer 体积更小,安装时仍需联网下载其他部分。 二. 安装 1.安装包形式 Install Now:默认当前账户安装,安装路径和内容是默认的。 Customize installation:自定义安装。 Install launcher for all users (recommended) / Use admin privileges when installing py.

By Ne0inhk
计算机毕业设计必看必学~基于spark超市销售数据分析的设计与实现,原创定制程序、单片机、java、PHP、Python、小程序、文案全套、毕设成品等!

计算机毕业设计必看必学~基于spark超市销售数据分析的设计与实现,原创定制程序、单片机、java、PHP、Python、小程序、文案全套、毕设成品等!

摘要 本论文旨在研究Spark技术和ECharts可视化技术在超市销售数据分析系统中的应用。本系统通过对超市销售数据进行分析和可视化展示,帮助决策层更好地了解销售情况和趋势,进而做出更有针对性的决策。本系统主要包括数据处理、数据可视化和系统测试三个模块。其中,数据处理模块主要负责对销售数据进行清洗、整理和分析;数据可视化模块主要利用ECharts可视化技术,将销售数据以多种图表类型进行展示;系统测试模块主要对系统进行全面、深入、系统化的测试,以提高系统的质量和可靠性。本系统的研究对超市销售数据分析系统的开发和应用具有一定的参考价值,可以为相关领域的研究和实践提供借鉴和启示。 spark框架作为一种成熟的Python开发框架,具有良好的可扩展性和灵活性,可以满足系统开发的需求。Python编程语言作为一种广泛应用于企业级开发的编程语言,具备强大的处理能力和稳定性。MySQL数据库作为一种常用的关系型数据库,能够高效地存储和管理系统数据。 关键词:超市销售数据分析;Python语言;spark框架;Mysql数据 Abstract This paper aims to s

By Ne0inhk