
1. 为什么选择Ubuntu 22.04 MySQL组合作为LTS长期支持版本Ubuntu 22.04 Jammy Jellyfish提供了5年的官方维护周期这使其成为生产环境部署的理想选择。而MySQL 8.0Ubuntu 22.04默认仓库版本相较于前代有三大显著改进性能提升新增窗口函数、通用表表达式(CTE)等SQL功能查询效率提升明显安全性增强默认启用caching_sha2_password认证插件支持角色权限管理JSON支持完整的JSON文档存储和路径查询能力实测在DigitalOcean 4核8G配置下MySQL 8.0在TPC-C基准测试中比5.7版本吞吐量提升近40%。但要注意如果你的应用强依赖MyISAM引擎可能需要考虑兼容性问题因为MySQL 8.0已将其设为弃用状态。2. 安装前的系统准备2.1 更新软件源索引首先确保apt包管理器使用最新索引sudo apt update sudo apt upgrade -y注意生产环境中建议在非高峰时段执行升级避免影响线上服务。升级前可通过ls -l /etc/apt/sources.list.d/检查是否有第三方源需要特殊处理。2.2 检查现有MySQL安装运行以下命令检查是否已存在MySQL服务systemctl status mysql若发现旧版本残留需要彻底卸载sudo apt purge mysql* sudo apt autoremove sudo rm -rf /etc/mysql /var/lib/mysql3. 三种安装方式详解3.1 官方仓库安装推荐执行单条命令完成安装sudo apt install mysql-server -y安装完成后会自动创建mysql系统用户和组初始化数据目录(/var/lib/mysql)生成默认配置文件(/etc/mysql/mysql.conf.d/mysqld.cnf)版本验证mysql --version # 应输出类似mysql Ver 8.0.33-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))3.2 使用DEB包安装适用于需要特定补丁版本的场景wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb sudo apt update sudo apt install mysql-server3.3 源码编译安装适合深度定制需求以5.7.42为例wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.42.tar.gz tar -xzvf mysql-5.7.42.tar.gz cd mysql-5.7.42/ cmake . -DCMAKE_INSTALL_PREFIX/usr/local/mysql \ -DMYSQL_DATADIR/var/lib/mysql \ -DSYSCONFDIR/etc \ -DWITH_INNOBASE_STORAGE_ENGINE1 make -j$(nproc) sudo make install4. 安全初始化配置4.1 运行安全脚本MySQL 8.0默认安装后需要执行sudo mysql_secure_installation会交互式询问以下配置密码强度验证插件建议启用设置root密码长度建议12字符移除匿名用户必选禁止root远程登录生产环境必选移除测试数据库建议移除立即重载权限表4.2 防火墙配置允许3306端口访问sudo ufw allow 3306/tcp sudo ufw enable5. 服务管理实战技巧5.1 systemctl控制命令# 启动服务 sudo systemctl start mysql # 设置开机自启 sudo systemctl enable mysql # 检查状态重点看Active和Process ID sudo systemctl status mysql # 查看错误日志实时跟踪 sudo tail -f /var/log/mysql/error.log5.2 性能调优参数编辑配置文件sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf关键参数建议4核8G内存服务器[mysqld] innodb_buffer_pool_size 4G innodb_log_file_size 256M max_connections 200 thread_cache_size 50 query_cache_type 0 # MySQL 8.0已移除查询缓存6. 常见问题解决方案6.1 连接错误排查遇到ERROR 2002 (HY000)时# 检查服务是否运行 sudo systemctl status mysql # 检查socket文件位置 sudo find / -name mysql.sock # 临时指定socket连接 mysql -u root -p --socket/var/run/mysqld/mysqld.sock6.2 密码重置方法如果忘记root密码停止MySQL服务编辑配置文件添加[mysqld] skip-grant-tables重启服务后无密码登录执行FLUSH PRIVILEGES; ALTER USER rootlocalhost IDENTIFIED BY 新密码;移除skip-grant-tables后重启6.3 字符集配置确保中文存储正确SHOW VARIABLES LIKE character_set%;建议在my.cnf中添加[client] default-character-setutf8mb4 [mysql] default-character-setutf8mb4 [mysqld] character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci7. 高级管理技巧7.1 创建管理用户避免直接使用rootCREATE USER admin% IDENTIFIED BY ComplexPssw0rd; GRANT ALL PRIVILEGES ON *.* TO admin% WITH GRANT OPTION; FLUSH PRIVILEGES;7.2 备份与恢复使用mysqldump全量备份mysqldump -u admin -p --all-databases full_backup.sql定时备份建议配合crontab0 3 * * * /usr/bin/mysqldump -u backup -ppassword --all-databases | gzip /backups/mysql_$(date \%Y\%m\%d).sql.gz7.3 监控设置安装常用监控工具sudo apt install mytop mysql-workbench-community关键监控命令-- 查看当前连接 SHOW PROCESSLIST; -- InnoDB状态 SHOW ENGINE INNODB STATUS; -- 慢查询分析 SELECT * FROM mysql.slow_log;