Ubuntu 22.04 安装 MySQL 5.7 完整指南

Ubuntu 22.04 安装 MySQL 5.7 完整指南

概述

本文档介绍在 Ubuntu 22.04 (Jammy Jellyfish) 系统上安装 MySQL 5.7 的完整步骤。

系统要求

  • Ubuntu 22.04 LTS
  • 至少 2GB RAM
  • 至少 2GB 可用磁盘空间
  • 具有 sudo 权限的用户

安装步骤

1. 清理现有 MySQL 安装(如有)

# 停止 MySQL 服务sudo systemctl stop mysql # 卸载现有 MySQL 包sudoapt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-* # 删除配置文件和数据sudorm -rf /etc/mysql /var/lib/mysql # 清理自动安装的依赖sudoapt autoremove sudoapt autoclean 

2. 下载 MySQL 5.7 Debian 包

# 下载 MySQL 5.7 官方包wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-server_5.7.41-1ubuntu18.04_amd64.deb-bundle.tar # 解压包tar -xvf mysql-server_5.7.41-1ubuntu18.04_amd64.deb-bundle.tar 

3. 安装系统依赖

# 更新包列表sudoapt update # 安装必要的依赖包sudoaptinstall libaio1 libmecab2 libtinfo5 -y 

4. 创建安装脚本

创建 install_mysql.sh 文件:

cat> install_mysql.sh <<'EOF' #!/bin/bash set -e echo "开始安装 MySQL 5.7..." # 按正确顺序安装 MySQL 包 echo "1. 安装 mysql-common..." sudo dpkg -i mysql-common_5.7.41-1ubuntu18.04_amd64.deb echo "2. 安装 libmysqlclient20..." sudo dpkg -i libmysqlclient20_5.7.41-1ubuntu18.04_amd64.deb echo "3. 安装 libmysqlclient-dev..." sudo dpkg -i libmysqlclient-dev_5.7.41-1ubuntu18.04_amd64.deb echo "4. 安装 libmysqld-dev..." sudo dpkg -i libmysqld-dev_5.7.41-1ubuntu18.04_amd64.deb echo "5. 安装 mysql-community-client..." sudo dpkg -i mysql-community-client_5.7.41-1ubuntu18.04_amd64.deb echo "6. 安装 mysql-client..." sudo dpkg -i mysql-client_5.7.41-1ubuntu18.04_amd64.deb echo "7. 安装 mysql-community-server..." sudo dpkg -i mysql-community-server_5.7.41-1ubuntu18.04_amd64.deb echo "8. 安装 mysql-server..." sudo dpkg -i mysql-server_5.7.41-1ubuntu18.04_amd64.deb echo "MySQL 5.7 安装完成!" EOF# 给脚本执行权限chmod +x install_mysql.sh 

5. 执行安装

# 运行安装脚本sudo ./install_mysql.sh # 如果遇到依赖问题,运行修复sudoaptinstall -f 

6. 配置 MySQL 服务

# 启动 MySQL 服务sudo systemctl start mysql # 设置开机自启sudo systemctl enable mysql # 检查服务状态sudo systemctl status mysql 

安装后配置

1. 安全配置

# 运行安全安装脚本sudo mysql_secure_installation 

按照提示进行安全配置:

  • 设置 root 密码
  • 移除匿名用户
  • 禁止 root 远程登录
  • 移除测试数据库
  • 重新加载权限表

2. 验证安装

# 检查 MySQL 版本 mysql --version # 登录 MySQLsudo mysql -u root -p # 在 MySQL 中查看状态 mysql> STATUS; mysql> SHOW DATABASES; mysql> EXIT;

故障排除

常见问题解决

1. 依赖问题
# 如果安装过程中出现依赖错误sudoaptinstall -f sudoapt update sudoaptinstall libaio1 libmecab2 libtinfo5 
2. 服务启动失败
# 查看错误日志sudotail -f /var/log/mysql/error.log # 检查配置文件sudo mysql --verbose --help |grep -A 1 -B 1"my.cnf"# 重新配置 MySQLsudo dpkg-reconfigure mysql-server-5.7 
3. 连接问题
# 检查 MySQL 监听端口sudonetstat -tlnp |grep mysql # 检查防火墙设置sudo ufw status sudo ufw allow mysql 

基本使用

创建新用户和数据库

-- 创建新数据库CREATEDATABASE mydatabase;-- 创建新用户CREATEUSER'myuser'@'localhost' IDENTIFIED BY'password';-- 授予权限GRANTALLPRIVILEGESON mydatabase.*TO'myuser'@'localhost';-- 刷新权限 FLUSH PRIVILEGES;

备份和恢复

# 备份数据库 mysqldump -u root -p --all-databases > backup.sql # 恢复数据库 mysql -u root -p < backup.sql 

性能优化建议

编辑 MySQL 配置文件

sudonano /etc/mysql/my.cnf 

添加以下基本优化配置:

[mysqld] # 基本性能设置 innodb_buffer_pool_size = 1G innodb_log_file_size = 256M max_connections = 100 query_cache_size = 64M 

重启 MySQL 使配置生效:

sudo systemctl restart mysql 

卸载 MySQL 5.7

# 停止服务sudo systemctl stop mysql # 卸载所有 MySQL 相关包sudo dpkg -l |grep mysql |awk'{print $2}'|xargssudo dpkg --purge # 删除残留文件sudorm -rf /etc/mysql /var/lib/mysql /var/log/mysql # 清理依赖sudoapt autoremove 

注意事项

  1. 版本兼容性: MySQL 5.7 在 Ubuntu 22.04 上可能不是官方支持版本
  2. 安全更新: 考虑使用 MySQL 8.0 以获得更好的安全支持和性能
  3. 生产环境: 在生产环境中建议使用官方 APT 仓库安装

支持信息

  • MySQL 官方文档: https://dev.mysql.com/doc/
  • Ubuntu 文档: https://help.ubuntu.com
  • MySQL 社区支持: https://forums.mysql.com/

重置密码的完整步骤

步骤1:停止 MySQL 服务

sudo systemctl stop mysql sudo systemctl status mysql # 确认服务已停止

步骤2:启用 skip-grant-tables 模式

# 备份原配置文件sudocp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.backup # 启用 skip-grant-tables(取消注释)sudosed -i 's/#skip-grant-tables/skip-grant-tables/' /etc/mysql/mysql.conf.d/mysqld.cnf # 验证修改sudogrep skip-grant-tables /etc/mysql/mysql.conf.d/mysqld.cnf 

步骤3:以跳过权限检查模式启动 MySQL

# 启动 MySQL 服务(现在不需要密码即可登录)sudo systemctl start mysql # 检查服务状态sudo systemctl status mysql 

步骤4:无密码登录 MySQL

# 直接登录,不需要密码sudo mysql -u root 

步骤5:在 MySQL 中重置密码

-- 切换到 mysql 系统数据库USE mysql;-- 查看当前用户信息SELECTuser, host, authentication_string FROMuserWHEREuser='root';-- 方法A:MySQL 5.7 专用密码重置命令UPDATEuserSET authentication_string = PASSWORD('您的新密码')WHEREuser='root';-- 方法B:如果上面不行,尝试这个UPDATEuserSET plugin ='mysql_native_password', authentication_string = PASSWORD('您的新密码')WHEREuser='root';-- 刷新权限 FLUSH PRIVILEGES;-- 退出 MySQLEXIT;

步骤6:禁用 skip-grant-tables 模式并重启

# 恢复原配置(重新注释掉 skip-grant-tables)sudosed -i 's/skip-grant-tables/#skip-grant-tables/' /etc/mysql/mysql.conf.d/mysqld.cnf # 重启 MySQL 服务sudo systemctl restart mysql # 检查服务状态sudo systemctl status mysql 

步骤7:测试新密码登录

# 使用新密码登录测试 mysql -u root -p 

输入您设置的新密码,应该能够成功登录。

完整的命令行操作序列

#!/bin/bash# MySQL 密码重置完整脚本echo"1. 停止 MySQL 服务..."sudo systemctl stop mysql echo"2. 启用 skip-grant-tables 模式..."sudosed -i 's/#skip-grant-tables/skip-grant-tables/' /etc/mysql/mysql.conf.d/mysqld.cnf echo"3. 启动 MySQL 服务..."sudo systemctl start mysql echo"4. 无密码登录并重置密码..."sudo mysql -u root <<EOF USE mysql; UPDATE user SET authentication_string = PASSWORD('MyNewPassword123!') WHERE user = 'root'; FLUSH PRIVILEGES; EXIT; EOFecho"5. 恢复配置文件..."sudosed -i 's/skip-grant-tables/#skip-grant-tables/' /etc/mysql/mysql.conf.d/mysqld.cnf echo"6. 重启 MySQL 服务..."sudo systemctl restart mysql echo"7. 测试新密码..." mysql -u root -p'MyNewPassword123!' -e "SELECT '密码重置成功!' as Message;"echo"MySQL 密码重置完成!"

如果上述方法遇到问题,尝试替代方案

替代方案1:使用 mysqld_safe 方式

# 停止 MySQLsudo systemctl stop mysql # 以跳过权限方式启动sudo mysqld_safe --skip-grant-tables --skip-networking &# 无密码登录 mysql -u root # 在 MySQL 中执行重置命令(同上)# 完成后杀死进程并正常重启sudokillall mysqld sudo systemctl start mysql 

替代方案2:使用 mysql_secure_installation

# 运行安全安装脚本重置密码sudo mysql_secure_installation 

密码重置后的推荐操作

1. 配置远程访问(如果需要)

-- 登录 MySQL mysql -u root -p -- 创建远程用户或修改现有用户CREATEUSER'root'@'%' IDENTIFIED BY'您的密码';GRANTALLPRIVILEGESON*.*TO'root'@'%'; FLUSH PRIVILEGES;-- 修改配置文件允许远程连接 sudo sed -i 's/bind-address.*=.*127.0.0.1/bind-address = 0.0.0.0/'/etc/mysql/mysql.conf.d/mysqld.cnf sudo systemctl restart mysql 

2. 安全建议

  • 使用强密码(大小写字母+数字+特殊字符)
  • 定期更换密码
  • 考虑使用非 root 用户进行日常操作
  • 限制远程访问 IP 范围

故障排除

如果重置后仍然无法登录:

  1. 检查 authentication_string 字段是否更新
  2. 确认 plugin 设置为 mysql_native_password
  3. 查看错误日志:sudo tail -f /var/log/mysql/error.log

常用诊断命令:

-- 查看用户认证信息SELECTuser, host, plugin, authentication_string FROM mysql.user;

最后配置运行非localhost地址连接

#!/bin/bashecho"=== MySQL 远程连接诊断 ==="# 1. 检查配置echo"1. 检查 MySQL 绑定地址:"sudogrep bind-address /etc/mysql/mysql.conf.d/mysqld.cnf echo"2. 检查监听端口:"sudonetstat -tlnp |grep mysql echo"3. 检查用户权限:" mysql -uroot -p123456 -e "SELECT user, host FROM mysql.user WHERE user = 'root';"# 2. 修复配置echo"4. 修改绑定地址..."sudosed -i 's/bind-address.*=.*127.0.0.1/bind-address = 0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf echo"5. 配置远程用户..." mysql -uroot -p123456 <<EOF CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; EOFecho"6. 重启 MySQL..."sudo systemctl restart mysql echo"7. 验证配置:"sudogrep bind-address /etc/mysql/mysql.conf.d/mysqld.cnf sudonetstat -tlnp |grep mysql echo"=== 修复完成,请测试远程连接 ==="

Read more

Flutter 三方库 random_name_generator 全系自动化环境鸿蒙适配导引:高速灌注大规模高质量仿生身份信息源数据池,攻克严苛测试流无序仿真阻断难题(适配鸿蒙 HarmonyOS

Flutter 三方库 random_name_generator 全系自动化环境鸿蒙适配导引:高速灌注大规模高质量仿生身份信息源数据池,攻克严苛测试流无序仿真阻断难题(适配鸿蒙 HarmonyOS

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 random_name_generator 全系自动化环境鸿蒙适配导引:高速灌注大规模高质量仿生身份信息源数据池,攻克严苛测试流无序仿真混沌阻断难题 在开发社交、游戏或自动化测试脚本时,快速生成真实的名称(而非随机乱码)是提升系统真实感和测试覆盖率的关键。random_name_generator 是一个轻量级的人名合成库。本文将详解该库在 OpenHarmony 环境下的适配与实战。 前言 什么是 random_name_generator?它并不是简单地随机拼接字符,而是内置了丰富的西方(如英语、西班牙语)命名习惯库。在鸿蒙操作系统蓬勃发展的今天,无论是为单机游戏生成 NPC 名称,还是在测试鸿蒙 HAP 模块时批量造“用户”,该库都能提供高质量、符合直觉的文本输出。 一、原理解析 1.1 基础概念

By Ne0inhk
Apache IoTDB产品介绍与Kubernetes 1.24集群安装部署深度指南

Apache IoTDB产品介绍与Kubernetes 1.24集群安装部署深度指南

引言 在物联网(IoT)与工业互联网蓬勃发展的今天,时序数据管理已成为企业数字化转型的核心挑战。Apache IoTDB作为专为物联网场景设计的开源时序数据库,凭借其高性能、低成本、易扩展的特性,在智能制造、车联网、能源监控等领域得到广泛应用。本文将深度解析IoTDB v1.3.3.2的产品架构与核心优势,并基于Kubernetes 1.24集群环境提供完整的安装部署方案,包含从环境准备到验证测试的全流程操作,确保读者可复制部署并投入生产使用。 一、Apache IoTDB产品深度解析 1.1 物联网时序数据管理痛点 传统关系型数据库在处理海量时序数据时面临显著瓶颈:高频率采样导致写入压力激增,乱序数据插入引发性能下降,长期存储成本高昂,多维度分析需求复杂。IoTDB针对这些痛点进行专项优化,通过以下技术创新实现突破: * 分层存储架构:采用内存缓存+磁盘持久化的混合存储模式,支持数据冷热分级存储,历史数据自动归档至低成本存储介质。 * TsFile存储引擎:自主研发的列式存储格式,通过时间戳-值对压缩算法实现5-10倍存储空间节省,支持时间分区与数据版本管理。 *

By Ne0inhk
2026最新|国内可用 Docker 镜像加速源大全(2月持续更新):DockerHub 镜像加速与限速避坑全指南(适配 Windows / macOS / Linux / containerd /

2026最新|国内可用 Docker 镜像加速源大全(2月持续更新):DockerHub 镜像加速与限速避坑全指南(适配 Windows / macOS / Linux / containerd /

2026最新|国内可用 Docker 镜像加速源大全(2月持续更新):DockerHub 镜像加速与限速避坑全指南(适配 Windows / macOS / Linux / containerd / k3s / BuildKit) 摘要:本指南面向国内服务器与办公网络用户,系统梳理 2026年2月可用 DockerHub 镜像加速源,覆盖 Docker Desktop、dockerd、containerd、k3s、BuildKit 等场景的一键配置、多源回退与测速排障方案,帮助规避 429/Too Many Requests 与拉取超时问题。 最后更新:2026-2 适用对象:国内云服务器/办公网络拉取 DockerHub 镜像慢、易触发限速(429/“Too Many Requests”)的场景 用途:一键配置镜像加速、

By Ne0inhk
OpenClaw多设备协同:手机+电脑分布式节点,跨端任务自动化

OpenClaw多设备协同:手机+电脑分布式节点,跨端任务自动化

文章目录 * 当"用手机修电脑"不再是段子 * 架构揭秘:Gateway是大脑,Nodes是手脚 * 动手实战:把你的手机变成AI的外挂设备 * 第一步:确认Gateway处于"远程模式" * 第二步:手机端配对流程 * 第三步:验证节点能力 * 场景实战:那些只有多设备协同才能干成的活儿 * 场景一:移动端触发,PC端执行(Mobile-to-Desktop) * 场景二:PC端决策,移动端采集(Desktop-to-Mobile) * 场景三:多节点并行任务(Swarm模式) * 技术原理:MCP协议让万物互联成为可能 * 避坑指南:别让你的分布式系统变成"分布死"系统 * 网络连通性是第一要义 * 权限管理要精细 * 电池与性能考虑 * 未来展望:从"多设备"到&

By Ne0inhk