Ubuntu 22.04 二进制安装单节点 MySQL

Ubuntu 22.04 二进制安装 MySQL LTS(长期支持版)完整教程

MySQL LTS 版本选择
目前 MySQL 8.4.4 是长期支持(LTS)版本,持续更新并保持稳定。

下载版本
你也可以在 MySQL 官方网站确认最新稳定 LTS 版本。


安装步骤

1. 卸载已有的 MySQL(如果已安装)

首先,确保系统中没有已安装的 MySQL,避免冲突。

停止 MySQL 服务(如果存在)
sudo systemctl stop mysql
删除 MySQL
sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-* -y
删除残留文件
sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql
清理系统
sudo apt autoremove -y
sudo apt autoclean

2. 下载 MySQL 二进制包

访问 MySQL 官方下载页面 或直接通过 wget 下载最新稳定版本(以 8.0.33 为例):

wget https://dev.mysql.com/get/Downloads/MySQL-8.4/mysql-8.4.4-linux-glibc2.28-x86_64.tar.xz

3. 解压二进制包并移动到安装目录

  1. 解压下载的 MySQL 压缩包

    tar -xvf mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz
    
  2. 移动解压的 MySQL 文件夹到 /usr/local/mysql

    sudo mv mysql-8.4.4-linux-glibc2.28-x86_64 /usr/local/mysql
    
  3. 创建符号链接(方便管理)

    sudo ln -s /usr/local/mysql /usr/local/mysql-lts
    

4. 创建用户和目录

  1. 创建 MySQL 用户和用户组

    • 创建一个 MySQL 用户,以更安全的方式运行 MySQL。
    sudo groupadd mysql
    sudo useradd -r -g mysql -s /bin/false mysql
    
  2. 创建数据目录并更改权限

    sudo mkdir -p /usr/local/mysql/data
    sudo chown -R mysql:mysql /usr/local/mysql
    sudo chmod -R 755 /usr/local/mysql
    

5. 初始化数据库

初始化数据库的步骤

  1. 数据目录创建和文件生成:初始化操作会根据你提供的 --datadir 参数创建数据目录,并生成 MySQL 必须的表、索引和配置文件。
  2. 临时密码生成:初始化后,MySQL 会为 root 用户生成一个临时密码,用户需要使用该密码首次登录数据库。
  3. 权限表创建:MySQL 创建权限表,用于管理用户、权限、角色等。
  4. 创建系统数据库:如 mysqlinformation_schemaperformance_schema 等。

切换到 MySQL 安装目录并初始化数据目录:

cd /XXXXXXX/mysql
sudo bin/mysqld --initialize --user=XXXX --basedir=/XXXXXXXXXX/mysql --datadir=/XXXXXXXX/data

输出结果中会生成一个 临时 root 密码(请保存下来,后面登录时会用到)。

在这里插入图片描述

mysqld --initialize 命令的作用

在 MySQL 中,mysqld --initialize 命令用于初始化 MySQL 数据库实例。这是部署 MySQL 数据库的关键步骤,主要是对数据库进行初步配置和创建相关文件,以便能够启动和使用 MySQL 服务。

具体作用
  1. 创建数据库系统文件
    该命令会在指定的数据目录(--datadir)中创建 MySQL 系统所需的数据库和表。例如,系统数据库(如 mysql 数据库)以及用于存储表结构、用户权限等数据的表将被初始化。

  2. 初始化数据目录
    mysqld --initialize 会检查指定的数据目录(--datadir)是否存在,如果不存在则会创建,并且会生成一系列的系统文件和目录,以供 MySQL 使用。

  3. 创建系统数据库

    • MySQL 启动时会使用这些系统数据库。典型的系统数据库包括 information_schemaperformance_schemamysql 等。
    • 其中 mysql 数据库是一个关键的系统数据库,存储了 MySQL 用户和权限信息。
  4. 生成临时 root 密码
    当你运行 mysqld --initialize 命令时,它会生成一个临时的 root 密码(该密码在命令的输出中显示)。这是初始化数据库后第一次使用 root 用户登录时所需要的密码。

  5. 初始化权限表
    MySQL 需要权限表来进行用户认证和权限控制,--initialize 命令会创建这些表并为 root 用户分配默认的权限。

  6. 其他内部数据库
    mysqld --initialize 还会创建一些其他的数据库和表,比如:

    • performance_schema:用于收集性能数据。
    • information_schema:存储数据库的元数据信息(例如表结构、索引、列信息等)。

--initialize 命令中的参数作用

1. --user=mysql
  • 作用:指定 mysqld 进程将以 mysql 用户身份运行。
  • 原因:出于安全考虑,MySQL 的进程应该以一个低权限用户运行,而不是 root。该参数确保 MySQL 数据库不会以 root 用户权限运行,从而降低了潜在的安全风险。
  • 默认值:如果没有指定此参数,MySQL 会默认使用当前系统的用户。
2. --basedir=/usr/local/src/mysql_demo/mysql-8.4.4
  • 作用:指定 MySQL 安装的基本目录路径。
  • 说明basedir 参数告诉 MySQL 安装程序 MySQL 文件的根目录,通常包含了二进制文件、配置文件和共享库等。
  • 例子:如果你的 MySQL 安装目录是 /usr/local/mysql,则该参数应该指向这个目录。这样,MySQL 在初始化过程中会根据该目录配置路径。
3. --datadir=/usr/local/src/mysql_demo/standalone/data
  • 作用:指定 MySQL 数据文件存储的位置。
  • 说明datadir 是 MySQL 存储数据库实际数据文件(如表文件、日志文件等)的目录。所有用户数据库和系统数据库都会存储在该目录中。
  • 建议:为保证 MySQL 性能和安全,通常会将数据目录放在一个专用的磁盘分区上,避免和系统文件混合。
  • 例子:在此命令中,--datadir 被设置为 /usr/local/mysql/data,意味着所有数据库的数据文件将会被存储在此目录。

常见问题与注意事项

  • 权限问题:确保你提供的 datadir 路径具有正确的权限,mysql 用户需要有读写权限。
  • 临时密码:初次登录后,请务必尽快更改 root 密码,因为初始化生成的密码通常是随机的并且安全性较低。
  • 路径错误:确保 basedirdatadir 指向正确的路径,否则 MySQL 初始化过程中可能会失败。

通过运行 mysqld --initialize 命令,MySQL 完成了所有数据库的初始化工作,使得你可以开始使用 MySQL 数据库并进行配置。


6. 配置 MySQL

创建配置文件 my.cnf

sudo nano /usr/local/src/mysql_demo/standalone/configFile/my.cnf

添加以下内容:

[mysqld]
# MySQL 主配置段,用于指定 MySQL 服务器的配置项# MySQL 安装的根目录,包含了 MySQL 的二进制文件、库、配置文件等。
# 在这里,所有 MySQL 执行的命令都会基于该目录。
basedir=/usr/local/src/mysql_demo/mysql-8.4.4# MySQL 数据库存储目录,即 MySQL 的所有数据库数据文件存放的位置。
# 例如,数据库表文件、日志文件、索引文件等都存储在此目录下。
datadir=/usr/local/src/mysql_demo/standalone/data# MySQL 服务监听的端口号。默认情况下,MySQL 使用端口 3306。
# 你可以根据需求修改此端口,以避免与其他服务冲突。
port=3306# MySQL 使用的 Unix 套接字文件的路径,客户端和服务器之间的通信通常使用此文件。
# 如果你使用的是基于 TCP/IP 的连接方式,则不需要设置此项,但如果使用的是本地 Unix 套接字通信,它就很重要。
socket=/usr/local/src/mysql_demo/mysql-8.4.4/mysql.sock# 指定 MySQL 进程运行的系统用户。通常建议使用 `普通用户` 用户来提高安全性。
# 如果 MySQL 以 root 用户运行,可能会带来潜在的安全隐患。
user=user01# 指定 MySQL 错误日志文件的路径。该日志文件记录 MySQL 服务器的启动、运行过程中的错误和警告信息。
# 错误日志对于排查 MySQL 问题非常重要。
log-error=/usr/local/src/mysql_demo/standalone/logs/mysql-error.log# 慢查询日志的位置。用于记录执行时间超过设定阈值的查询。
slow-query-log-file=/usr/local/src/mysql_demo/standalone/logs/mysql-slow.log# 二进制日志的位置,用于记录所有更改数据库内容的操作。
# 二进制日志对于数据库的备份、恢复以及复制功能非常重要。
log-bin=/usr/local/src/mysql_demo/standalone/logs/mysql-bin.log# 查询日志的位置,用于记录所有客户端发送的 SQL 查询。
# 查询日志对于诊断性能问题以及分析客户端查询行为很有帮助。
general-log-file=/usr/local/src/mysql_demo/standalone/logs/mysql-general.log# MySQL 进程 ID 文件的路径,记录 MySQL 服务器进程的 ID。
# 该文件的作用是便于管理员管理 MySQL 服务,比如停止或启动 MySQL 时使用。
pid-file=/usr/local/src/mysql_demo/standalone/data/mysql.pid# 以下是为生产环境优化性能的可选配置# 设置 MySQL 服务器允许的最大连接数。
# 如果有更多的并发用户连接 MySQL,增大此值可以避免连接数不足的问题。
# 该值应该根据服务器的硬件资源和并发需求来调整。
max_connections=200# 设置 SQL 模式,用于控制 MySQL 的行为和查询的严格性。
# - `STRICT_TRANS_TABLES`: 使得 MySQL 在处理数据时对类型不匹配的操作进行严格检查。
# - `NO_ENGINE_SUBSTITUTION`: 当指定的存储引擎不可用时,MySQL 不会自动使用默认引擎。
# 该设置有助于提高数据一致性和查询的可靠性。
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

保存并退出。


7. 设置环境变量(可选)

编辑 .bashrc 文件,添加 MySQL 命令到环境变量:

sudo nano ~/.bashrc

在文件末尾添加:

export PATH=$PATH:/usr/local/mysql/bin

使环境变量生效:

source ~/.bashrc

8. 创建 systemd 服务(便于使用 systemctl 管理 MySQL)

  1. 创建 MySQL 服务文件

    sudo nano /etc/systemd/system/mysql.service
    
  2. 添加以下内容

[Unit]
Description=MySQL Server  # 描述该服务为 MySQL 数据库服务器
After=network.target      # 定义启动顺序,确保网络服务就绪后再启动 MySQL 服务[Service]
Type=forking              # 定义服务类型为 forking,表示服务启动时会产生子进程
User=user01                # 指定运行 MySQL 服务的用户为 user01,提升安全性
Group=user01               # 指定服务运行时所属的用户组为 user01,增强权限管理
ExecStart=/usr/local/src/mysql_demo/mysql-8.4.4/bin/mysqld --defaults-file=/usr/local/src/mysql_demo/standalone/configFile/my.cnf  # 定义启动命令及配置文件路径
ExecStop=/usr/local/src/mysql_demo/mysql-8.4.4/bin/mysqladmin -u root -p shutdown       # 定义停止命令,使用 mysqladmin 管理工具优雅关闭 MySQL 服务
LimitNOFILE=5000          # 提升文件描述符限制为 5000,增强 MySQL 在高并发场景下的性能[Install]
WantedBy=multi-user.target # 定义服务目标,当系统进入 multi-user 模式时,该服务会自动启动

这是一个 systemd 服务单元文件,用于定义如何启动、停止和管理 MySQL 服务器进程。下面我将逐行详细解释这个文件的内容,并注释每一项配置的含义。


这个 systemd 单元文件使管理员能够轻松管理 MySQL 服务,包括自动启动、手动启动、停止以及配置权限和资源限制等。同时,它提升了 MySQL 运行时的安全性和稳定性,通过限制用户权限和提高文件描述符数量来优化系统运行表现。


[Unit] 部分
[Unit]
Description=MySQL Server
After=network.target

解释:

  • [Unit]:这是 systemd 单元文件的基本部分,用于描述服务单元的元数据信息,以及定义启动顺序和依赖关系。
  • Description=MySQL Server:描述该服务的功能,这一行用来告诉用户或管理员,这个服务是用于管理 MySQL 服务器的。
  • After=network.target:表示此服务需要在网络功能就绪后启动。network.target 代表网络目标,确保 MySQL 在网络服务初始化完成后再启动。

[Service] 部分
[Service]
Type=forking
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
ExecStop=/usr/local/mysql/bin/mysqladmin -u root -p shutdown
LimitNOFILE=5000

解释:

  • [Service]:定义与该服务启动、运行、停止相关的配置。

  • Type=forking:表示该服务为 “forking”类型,即 MySQL 服务在启动时,会生成一个父进程,然后将主要的工作交给子进程处理。forking 通常用于后台运行的守护进程。

  • User=mysql:指定运行该服务的用户为 mysql,这是一种安全机制,防止使用 root 用户运行数据库服务,从而降低系统被攻击的风险。

  • Group=mysql:指定运行该服务时所属的用户组为 mysql,进一步细化权限管理,确保只有 mysql 用户组成员可以访问相关资源。

  • ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf

    • 定义启动命令。
    • /usr/local/mysql/bin/mysqld 是 MySQL 的主服务器程序路径,执行该程序以启动 MySQL 服务。
    • --defaults-file=/etc/my.cnf 表示启动时使用配置文件 /etc/my.cnf。这个配置文件中包含了 MySQL 的详细参数设置(如端口、数据目录、日志路径等)。
  • ExecStop=/usr/local/mysql/bin/mysqladmin -u root -p shutdown

    • 定义停止命令。
    • /usr/local/mysql/bin/mysqladmin 是 MySQL 的管理工具,用于关闭或管理 MySQL 服务。
    • -u root 指定使用 root 用户登录数据库。
    • -p 提示用户在停止服务时输入密码,确保安全性。
    • shutdown 是命令参数,用于优雅地关闭 MySQL 服务,确保数据在关闭时不会丢失或损坏。
  • LimitNOFILE=5000

    • 设置文件描述符限制,即允许 MySQL 打开的最大文件数为 5000
    • 默认情况下,Linux 系统可能限制每个进程只能打开 1024 个文件,但对于数据库服务来说,这可能不够,因为 MySQL 可能同时处理多个连接、文件、日志等。
    • 提升这个限制可以增强 MySQL 的性能,尤其在高并发场景中。

[Install] 部分
[Install]
WantedBy=multi-user.target

解释:

  • [Install]:用于定义该服务在安装(即 systemctl enable)时的行为。
  • WantedBy=multi-user.target
    • 表示该服务应该在 multi-user.target 目标下启用。
    • multi-user.target 是系统启动模式的一部分,它类似于传统的 Linux 运行级别 3,即一个没有图形界面的多用户环境。
    • 这意味着,当系统进入多用户模式时(如开机完成、进入登录界面),MySQL 服务将自动启动。

  1. 保存并退出

  2. 重新加载 systemd 配置并启动 MySQL 服务

    sudo systemctl daemon-reload
    sudo systemctl start mysql
    sudo systemctl enable mysql
    

9. 修改 root 密码并允许远程访问

  1. 登录 MySQL(使用初始化时生成的临时密码)

    mysql -u root -p
    
  2. 修改 root 密码为 123456

    ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
    FLUSH PRIVILEGES;
    
  3. 允许远程访问(如果需要)

    ALTER USER 'root'@'%' IDENTIFIED BY '123456';
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
  4. 更改配置文件,允许所有 IP 连接(如果需要远程访问)
    编辑 /etc/my.cnf

    sudo nano /etc/my.cnf
    

    修改 bind-address

    bind-address = 0.0.0.0
    
  5. 重启 MySQL

    sudo systemctl restart mysql
    

10. 验证安装

  1. 检查 MySQL 服务是否正常运行

    sudo systemctl status mysql
    
  2. 查看 MySQL 版本

    mysql --version
    
  3. 登录数据库并确认连接成功

    mysql -u root -p
    

二进制安装的文件目录结构

安装完成后,你的 MySQL 文件分布大致如下:

  • MySQL 程序文件/usr/local/mysql/
  • 数据存储目录/usr/local/mysql/data/
  • 配置文件/etc/my.cnf
  • 日志文件/usr/local/mysql/data/mysql-error.log

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

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

相关文章

安装和管理最新的Python3环境(以Mac为例)

背景: 随着大模型技术的快速发展,各种基于AI的测试技术也层出不穷,有些场景需要在较高版本的Python3环境下实现,否则可能会出现兼容性问题。另外考虑自己对于Python3的各个版本环境的管理和使用其实一直都不是特别的清楚&#xf…

【计算机网络】网络简介

文章目录 1. 局域网与广域网1.1 局域网1.2 广域网 2. 路由器和交换机3. 五元组3.1 IP和端口3.2 协议3.3 协议分层 4. OSI七层网络协议5. TCP/IP五层模型5.1 TCP/IP模型介绍5.2 网络设备所在分层 6. 封装与分用6.1 数据包的称谓6.2 封装6.3 分用 1. 局域网与广域网 1.1 局域网 …

【云馨AI-大模型】自动化部署Dify 1.1.2,无需科学上网,Linux环境轻松实现,附Docker离线安装等

Dify介绍 官网:https://dify.ai/zh生成式 AI 应用创新引擎开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力,轻松构建和运营生成式 AI 原生应用。 Dify安装脚本 目录创建 mkdir -p /data/yunxinai &&a…

人工智能和量子时代的网络安全

在不断发展的网络安全领域,人工智能和量子技术正在迅速改变游戏规则。它们的潜力有望极大地改变政府和组织保护、防御和发展系统以应对不断发展的网络威胁的方式。 人工智能 (AI) 在检测和缓解网络威胁方面表现出了巨大的潜力。人工智能算法可以快速分析大量数据、…

前端样式库推广——TailwindCss

官方网址: https://tailwindcss.com/docs/installation/using-vite 中文官方文档:https://www.tailwindcss.cn/ github地址:tailwindcss 正在使用tailwindcss的网站:https://tailwindcss.com/showcase 一看github,竟然…

《基于深度学习的指纹识别智能门禁系统》开题报告

个人主页:大数据蟒行探索者 1研究背景 1.1开发目的和意义 指纹识别作为生物特征识别领域的一项重要技术,在安全认证、犯罪侦查和个人身份验证等方面具有广泛应用前景。随着深度学习技术的迅猛发展,基于深度学习的指纹识别系统成为了当前研究…

WSL Linux 子系统download

WSL各Linux 子系统下载 WSL Linux 最新下载 微软应用商店 | Microsoft StoreWSL Linux 历史版下载复制应用商店Linux地址到转换下载地址https://store.rg-adguard.net/ Version百度网盘离线下载OracleLinux提取

Java替换jar包中class文件

在更新java应用版本的运维工作中,由于一些原因,开发没办法给到完整的jar包,这个时候,就可以只将修改后的某个Java类的class文件替换掉原来iar包中的class文件,重新启动服务即可: 1、将jar包和将要替换的cl…

23种设计模式-创建型模式-抽象工厂

文章目录 简介场景问题1. 风格一致性失控2. 对象创建硬编码3. 产品族管理失效 解决总结 简介 抽象工厂是一种创建型设计模式,可以生成相关对象系列,而无需指定它们的具体类。 场景 假设你正在写一个家具店模拟器。 你的代码这些类组成: 相…

修改服务器windows远程桌面默认端口号

修改服务器windows远程桌面默认端口号 在Windows服务器上修改远程桌面协议(RDP)的默认端口(3389)可以增强服务器的安全性,减少被恶意扫描和攻击的风险。以下是修改远程端口的详细步骤: 按 Win R 打开运行…

【MySQL】 基本查询(上)

欢迎拜访:-CSDN博客 本篇主题:【MySQL】 基本查询(上) 发布时间:2025.2.14 隶属专栏:MySQL CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) 目录 Create 基本知识…

Vue3(自定义指令directive详解)

文章目录 前言一、自定义指令的生命周期钩子二、自定义指令的创建与注册使用三、扩展 简化形式​总结 前言 在Vue3中,自定义指令是一种强大的工具,允许开发者扩展和增强HTML元素的功能。以下是对Vue3中自定义指令的详细解析: 一、自定义指令…

进制转换(R转十)(1290. 二进制转换十进制、1292. 十六进制转十进制、1291. 八进制转十进制、1405. 小丽找潜在的素数)

题单地址:题单中心-东方博宜OJ 这里以二进制转十进制为例(按位加权求和法) 1290. 二进制转换十进制 问题描述 请将一个 25 位以内的 2 进制正整数转换为 1010 进制! 输入 一个 25 位以内的二进制正整数。 输出 该数对应的…

个人博客系统 --- 测试报告

一、项目功能介绍 该项目由:登录模块、博客首页模块、博客详情页模块、博客编辑页模块四个功能模块组成。 该系统实现了个人博客的保存以及记录了发布日期、时间、发布人等信息。 二、测试内容与测试用例 我们需要对该系统进行功能测试,界面测试&…

从入门到精通【MySQL】 CRUD

文章目录 📕1. Create 新增✏️1.1 单行数据全列插入✏️1.2 单行数据指定列插入✏️1.3 多行数据指定列插入 📕2. Retrieve 检索✏️2.1 全列查询✏️2.2 指定列查询✏️2.3 查询字段为表达式✏️2.4 为查询结果指定别名✏️2.5 结果去重查询 &#x1f…

C++ 继承

目录 一、继承的概念与定义 1.1 继承的概念 1.2 继承的定义 1.2.1 语法 1.2.2 继承关系和访问限定符 1.2.3 继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、C11 final 六、继承与友元 七、继承与静态成…

Python及PyCharm配置教程:从零开始搭建开发环境

引言 Python作为一门简单易学、功能强大的编程语言,近年来在数据分析、人工智能、Web开发等领域得到了广泛应用。而PyCharm作为一款专为Python开发者设计的集成开发环境(IDE),提供了丰富的功能和工具,能够极大地提高开…

python网络爬虫开发实战之网页数据的解析提取

目录 1 XPath的使用 1.1 XPath概览 1.2 XPath常用规则 1.3 准备工作 1.4 实例引入 1.5 所有节点 1.6 节点 1.7 父节点 1.8 属性匹配 1.9 文本获取 1.10 属性获取 1.11 属性多值匹配 1.12 多属性匹配 1.13 按序选择 1.14 节点轴选择 2 Beautiful Soup 2.1 简介…

【AI】Orin Nano+ubuntu22.04上移植YoloV11,并使用DeepStream测试成功

1、准备工作 使用 sdk-manager 烧写 OrinNano, JetPack版本为6.0 DP,对应操作系统为:Ubuntu22.04 参见博客:【NVIDIA】Jetson Orin Nano系列:烧写Ubuntu22.04 2、安装 PyTorch 2.1 下载依赖 1)安装onnx pip install onnx -i https://pypi.tuna.tsinghua.edu.cn/sim…

在coze工作流中将数据回写到飞书表格

在coze工作流中将数据回写到飞书表格