当前位置: 首页 > 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.7MySQL 5.7虽然已经不是最新版本但仍然是许多企业应用和遗留系统的首选。它提供了稳定的性能和广泛的应用支持特别是在以下场景中需要与特定应用程序兼容依赖MySQL 5.7特有功能的系统尚未准备好升级到MySQL 8.0的环境重要考虑MySQL 5.7已于2023年10月结束官方支持这意味着它将不再接收安全更新。在生产环境中使用前请评估安全风险。2. 在Ubuntu 22.04上安装MySQL 5.72.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在配置界面中选择MySQL Server Cluster选择mysql-5.7选择OK确认然后更新软件包列表sudo apt update2.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 ago3. MySQL root密码管理3.1 如果你在安装时设置了密码如果你在安装过程中设置了root密码可以直接使用该密码登录mysql -u root -p3.2 如果密码未知或丢失如果你跳过了密码设置或忘记了密码可以按照以下步骤重置首先停止MySQL服务sudo systemctl stop mysql以安全模式启动MySQLsudo mysqld_safe --skip-grant-tables 连接到MySQL服务器此时不需要密码mysql -u root在MySQL提示符下执行以下命令UPDATE mysql.user SET authentication_stringPASSWORD(你的新密码) WHERE Userroot; FLUSH PRIVILEGES; exit;重启MySQL服务sudo systemctl restart mysql3.3 解决认证插件问题如果你遇到类似plugin caching_sha2_password could not be loaded的错误可能是因为MySQL 5.7和8.0的默认认证插件不同。解决方法ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 你的密码; FLUSH PRIVILEGES;4. 常见问题与解决方案4.1 无法连接到MySQL服务器错误现象ERROR 2002 (HY000): Cant connect to local MySQL server through socket /var/run/mysqld/mysqld.sock解决方案检查MySQL服务是否运行systemctl status mysql如果服务未运行尝试启动sudo systemctl start mysql如果服务启动失败检查错误日志sudo tail -n 50 /var/log/mysql/error.log4.2 权限问题错误现象Access denied for user rootlocalhost解决方案确认你使用的密码正确如果忘记密码按照3.2节的步骤重置检查用户权限SELECT Host, User FROM mysql.user;4.3 字符集配置要确保MySQL支持中文和其他Unicode字符建议配置UTF-8字符集编辑MySQL配置文件sudo nano /etc/mysql/my.cnf在[mysqld]部分添加character-set-serverutf8 collation-serverutf8_general_ci重启MySQL服务sudo systemctl restart mysql5. 安全加固建议安装完成后建议运行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. 性能调优基础对于小型到中型应用可以考虑以下基本优化编辑配置文件sudo nano /etc/mysql/my.cnf添加或修改以下参数[mysqld] innodb_buffer_pool_size 1G # 根据可用内存调整通常为总内存的50-70% innodb_log_file_size 256M max_connections 100 query_cache_size 64M query_cache_type 1重启MySQL使更改生效sudo systemctl restart mysql提示在生产环境中进行重大配置更改前建议先在测试环境验证。8. 备份与恢复8.1 使用mysqldump备份mysqldump -u root -p --all-databases full_backup.sql8.2 备份单个数据库mysqldump -u root -p 数据库名 database_backup.sql8.3 恢复数据库mysql -u root -p backup_file.sql8.4 定时自动备份可以设置cron任务实现自动备份创建备份脚本sudo nano /usr/local/bin/mysql_backup.sh添加以下内容#!/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 {} \;设置可执行权限sudo chmod x /usr/local/bin/mysql_backup.sh添加cron任务每天凌晨2点运行sudo crontab -e添加以下行0 2 * * * /usr/local/bin/mysql_backup.sh9. 监控与日志9.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重启MySQLsudo systemctl restart mysql9.2 查看当前连接SHOW PROCESSLIST;9.3 查看系统变量SHOW VARIABLES;9.4 查看状态信息SHOW STATUS;10. 升级到MySQL 8.0虽然本文重点介绍MySQL 5.7但建议在可能的情况下考虑升级到MySQL 8.0。升级前请注意备份所有数据检查应用程序兼容性查看官方升级指南中的重大变更考虑先在测试环境验证升级过程升级基本步骤备份所有数据库停止MySQL 5.7服务安装MySQL 8.0运行mysql_upgrade工具验证数据和应用程序功能在实际项目中我发现多开发者遇到问题时会直接重装MySQL这往往导致数据丢失。掌握正确的密码管理和故障排查方法可以节省大量时间。特别是在团队协作环境中确保所有成员都了解这些基本操作流程非常重要。
http://www.zskr.cn/news/1355895.html

相关文章:

  • Windows网络音频革命:Scream虚拟声卡完整指南
  • 伽马射线暴模型对比:从炮弹模型到火球模型的演化与统一
  • PROBAST评估框架:破解医疗AI预测模型偏倚风险
  • 3分钟搞定专业网络拓扑图:这款Vue开源工具让你告别绘图烦恼
  • 跨平台Unity游戏资源编辑利器:UABEA深度解析
  • 神经网络节点的本质:加权求和+激活函数的四阶段工作原理
  • OpenHarmony Rust模块配置实战:从FFI到系统集成的完整指南
  • Adobe Illustrator批量替换脚本ReplaceItems:5分钟从新手到专家的终极指南
  • 别再只把COCO当数据集了!用pycocotools玩转目标检测、分割、关键点三大任务(附完整代码)
  • 常见的转义字符
  • TVA的自适应决策引擎与动态质量判定体系
  • 如何用res-downloader轻松下载全网无水印视频?新手终极指南
  • 保姆级教程:为你的OpenWrt路由器编译一个MQTT客户端IPK(含动态库打包避坑指南)
  • 从零开始接入 Taotoken,新用户注册到首次成功调用的全过程耗时
  • GPU代码跨平台转译技术解析与实践
  • 终极指南:如何用Word Checker轻松实现中英文拼写自动纠正
  • Mathtype高手私藏技巧:自定义快捷键把常用公式变成“一键宏”
  • uVision调试器硬件需求与配置全指南
  • 从数据探索到商业报告:如何用Neo4j Bloom、Graphileon和NeoDash搭建完整的数据工作流
  • C166微控制器引导加载程序到应用程序控制权转移实践
  • EA(Enterprise Architect)UML修改字体大小
  • 如何用Shutter Encoder解决专业视频工作流中的格式兼容性问题:5步完整指南
  • UVa 276 Egyptian Multiplication
  • docx2tex:Word转LaTeX的技术革命,如何用XML处理栈解决学术排版难题
  • 2026年5月潍坊游泳池建设指南:专业视角下的合理选型与避坑攻略 - 2026年企业推荐榜
  • 从财务月结到供应链协同——Lindy在制造业的7类高价值场景落地清单(含可复用的触发规则模板)
  • 告别仿真报错!手把手教你用Quartus II 18.1和ModelSim 10.5c创建第一个Testbench
  • Keil MDK 5示例项目缺失问题解决方案
  • PDF补丁丁:免费开源PDF处理工具的终极解决方案
  • 3小时变5分钟:如何用docx2tex彻底告别Word转LaTeX的痛苦