当前位置: 首页 > news >正文

别再踩坑了!Ubuntu 22.04 LTS 上 MySQL 5.7 保姆级安装与密码重置指南

Ubuntu 22.04 LTS 上 MySQL 5.7 安装与密码管理全攻略

当你在Ubuntu 22.04 LTS上安装MySQL 5.7时,可能会遇到一些意想不到的挑战。与早期版本不同,Ubuntu 22.04默认不再提供MySQL 5.7的官方软件包,而且安装后的密码管理方式也发生了变化。本文将带你一步步完成从安装到密码配置的完整流程,避免常见的陷阱。

1. 为什么选择MySQL 5.7?

MySQL 5.7虽然已经不是最新版本,但仍然是许多企业应用和遗留系统的首选。它提供了稳定的性能和广泛的应用支持,特别是在以下场景中:

  • 需要与特定应用程序兼容
  • 依赖MySQL 5.7特有功能的系统
  • 尚未准备好升级到MySQL 8.0的环境

重要考虑:MySQL 5.7已于2023年10月结束官方支持,这意味着它将不再接收安全更新。在生产环境中使用前,请评估安全风险。

2. 在Ubuntu 22.04上安装MySQL 5.7

2.1 添加MySQL官方APT仓库

由于Ubuntu 22.04默认仓库中不再包含MySQL 5.7,我们需要手动添加MySQL官方APT仓库:

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

在配置界面中:

  1. 选择"MySQL Server & Cluster"
  2. 选择"mysql-5.7"
  3. 选择"OK"确认

然后更新软件包列表:

sudo apt update

2.2 安装MySQL 5.7服务器

执行以下命令安装MySQL服务器:

sudo apt install mysql-server-5.7

安装过程中,系统会提示你设置root密码。这是与早期Ubuntu版本的一个重要区别- 现在你可以在安装过程中直接设置密码。

注意:如果跳过密码设置,系统会生成一个随机密码并存储在日志文件中,我们稍后会介绍如何查找。

2.3 验证安装

安装完成后,检查MySQL服务状态:

systemctl status mysql

你应该看到类似以下输出:

● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2023-04-20 10:30:45 UTC; 2min 30s ago

3. MySQL root密码管理

3.1 如果你在安装时设置了密码

如果你在安装过程中设置了root密码,可以直接使用该密码登录:

mysql -u root -p

3.2 如果密码未知或丢失

如果你跳过了密码设置或忘记了密码,可以按照以下步骤重置:

  1. 首先停止MySQL服务:
sudo systemctl stop mysql
  1. 以安全模式启动MySQL:
sudo mysqld_safe --skip-grant-tables &
  1. 连接到MySQL服务器(此时不需要密码):
mysql -u root
  1. 在MySQL提示符下执行以下命令:
UPDATE mysql.user SET authentication_string=PASSWORD('你的新密码') WHERE User='root'; FLUSH PRIVILEGES; exit;
  1. 重启MySQL服务:
sudo systemctl restart mysql

3.3 解决认证插件问题

如果你遇到类似"plugin caching_sha2_password could not be loaded"的错误,可能是因为MySQL 5.7和8.0的默认认证插件不同。解决方法:

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

4. 常见问题与解决方案

4.1 无法连接到MySQL服务器

错误现象:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

解决方案

  1. 检查MySQL服务是否运行:
systemctl status mysql
  1. 如果服务未运行,尝试启动:
sudo systemctl start mysql
  1. 如果服务启动失败,检查错误日志:
sudo tail -n 50 /var/log/mysql/error.log

4.2 权限问题

错误现象:Access denied for user 'root'@'localhost'

解决方案

  1. 确认你使用的密码正确
  2. 如果忘记密码,按照3.2节的步骤重置
  3. 检查用户权限:
SELECT Host, User FROM mysql.user;

4.3 字符集配置

要确保MySQL支持中文和其他Unicode字符,建议配置UTF-8字符集:

  1. 编辑MySQL配置文件:
sudo nano /etc/mysql/my.cnf
  1. 在[mysqld]部分添加:
character-set-server=utf8 collation-server=utf8_general_ci
  1. 重启MySQL服务:
sudo systemctl restart mysql

5. 安全加固建议

安装完成后,建议运行MySQL安全脚本:

sudo mysql_secure_installation

这个脚本会引导你完成以下安全设置:

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

6. 日常管理命令

以下是一些常用的MySQL管理命令:

  • 启动/停止/重启MySQL服务

    sudo systemctl start|stop|restart mysql
  • 查看MySQL版本

    SELECT VERSION();
  • 查看所有数据库

    SHOW DATABASES;
  • 创建新用户

    CREATE USER '用户名'@'localhost' IDENTIFIED BY '密码';
  • 授予权限

    GRANT ALL PRIVILEGES ON 数据库名.* TO '用户名'@'localhost'; FLUSH PRIVILEGES;

7. 性能调优基础

对于小型到中型应用,可以考虑以下基本优化:

  1. 编辑配置文件:
sudo nano /etc/mysql/my.cnf
  1. 添加或修改以下参数:
[mysqld] innodb_buffer_pool_size = 1G # 根据可用内存调整,通常为总内存的50-70% innodb_log_file_size = 256M max_connections = 100 query_cache_size = 64M query_cache_type = 1
  1. 重启MySQL使更改生效:
sudo systemctl restart mysql

提示:在生产环境中进行重大配置更改前,建议先在测试环境验证。

8. 备份与恢复

8.1 使用mysqldump备份

mysqldump -u root -p --all-databases > full_backup.sql

8.2 备份单个数据库

mysqldump -u root -p 数据库名 > database_backup.sql

8.3 恢复数据库

mysql -u root -p < backup_file.sql

8.4 定时自动备份

可以设置cron任务实现自动备份:

  1. 创建备份脚本:
sudo nano /usr/local/bin/mysql_backup.sh
  1. 添加以下内容:
#!/bin/bash DATE=$(date +%Y%m%d%H%M) mysqldump -u root -p你的密码 --all-databases > /backups/mysql_backup_$DATE.sql find /backups -type f -name "*.sql" -mtime +7 -exec rm {} \;
  1. 设置可执行权限:
sudo chmod +x /usr/local/bin/mysql_backup.sh
  1. 添加cron任务(每天凌晨2点运行):
sudo crontab -e

添加以下行:

0 2 * * * /usr/local/bin/mysql_backup.sh

9. 监控与日志

9.1 查看慢查询日志

  1. 启用慢查询日志:
sudo nano /etc/mysql/my.cnf

添加:

slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 2
  1. 重启MySQL:
sudo systemctl restart mysql

9.2 查看当前连接

SHOW PROCESSLIST;

9.3 查看系统变量

SHOW VARIABLES;

9.4 查看状态信息

SHOW STATUS;

10. 升级到MySQL 8.0

虽然本文重点介绍MySQL 5.7,但建议在可能的情况下考虑升级到MySQL 8.0。升级前请注意:

  1. 备份所有数据
  2. 检查应用程序兼容性
  3. 查看官方升级指南中的重大变更
  4. 考虑先在测试环境验证升级过程

升级基本步骤:

  1. 备份所有数据库
  2. 停止MySQL 5.7服务
  3. 安装MySQL 8.0
  4. 运行mysql_upgrade工具
  5. 验证数据和应用程序功能

在实际项目中,我发现��多开发者遇到问题时会直接重装MySQL,这往往导致数据丢失。掌握正确的密码管理和故障排查方法可以节省大量时间。特别是在团队协作环境中,确保所有成员都了解这些基本操作流程非常重要。

http://www.cnnetsun.cn/news/2526645.html

相关文章:

  • 通过 TaoToken CLI 工具一键配置多开发环境下的模型密钥
  • 用动态主题建模挖掘科学文献中的真实研究趋势
  • SVGnest材料切割优化完全指南:5步实现智能矢量嵌套布局
  • 详解C++编译器优化技术
  • 如何用Godot RE Tools实现完整的Godot项目逆向工程恢复?
  • 5分钟实现游戏手柄控制PC的终极指南:Gopher360让你的客厅电脑焕然一新
  • C/C++高精度算法的实现
  • 告别仿真报错!手把手教你用Quartus II 18.1和ModelSim 10.5c创建第一个Testbench
  • 五分钟完成Node.js服务对接Taotoken多模型API的配置教程
  • Unity图表性能优化:从折线图到饼图的底层实现与避坑指南
  • 如何3分钟掌握AI智能填充:Fillinger终极实战指南
  • 大模型部署困境破局:Qwen模型ONNX格式转换与多平台部署实战
  • 新一代高性能SAR舰船智能检测数据集SSDD:从集中到分散的渐进式检测范式革新
  • 企业内训系统集成Taotoken实现多模型AI助教与可控的交互成本
  • 新手开发者首次接触 Taotoken 控制台的功能导览与核心操作
  • MATLAB机器人工具箱:从零到精通的机器人开发全攻略
  • Arduino UNO R3引脚图详解与供电方案选择:从USB到外接电源的避坑指南
  • Winhance中文版终极指南:3步让你的Windows飞起来
  • 注意力机制的幕后:它到底转化了什么?输入、输出与词向量的类比
  • 《纳瓦尔宝典》幸福篇精读:程序员如何在敲码之余获得内心的平静与幸福
  • 渐变不自然?曝光过曝?色阶断裂?Midjourney渐变风格全流程调优手册,30分钟重塑视觉一致性
  • SELinux报错排查指南:从AVC拒绝日志到精准修复
  • SDL2初始化函数全解析:从SDL_Init到SDL_Quit,你的游戏引擎第一行代码该怎么写?
  • 在无MMU的RISC-V MCU上移植Linux 6.10内核:基于HPM6360的实践指南
  • 如何高效配置CharacterAI Python API:完整使用指南与最佳实践
  • 鸿蒙 PC:从“用户点击”到“AI 调度”
  • Python自动化CAD处理终极指南:用ezdxf库实现DXF文件高效操作
  • 2026 最新claude-code 实用技巧指南 看这一篇就够了
  • 3步实现Adobe全家桶完整激活:终极破解方案详解
  • 如何永久保存你的微信聊天记录:WeChatMsg完整解决方案指南