Ubuntu 22.04 LTS 上 MySQL 5.7 终极安装指南:从避坑到精通
当你在Ubuntu 22.04 LTS上尝试安装MySQL 5.7时,可能会发现官方仓库默认提供的是MySQL 8.0版本。这就像走进一家咖啡店想要经典拿铁,却被推荐最新款的特调——虽然也不错,但可能并不是你想要的。本文将带你绕过所有常见陷阱,从版本锁定到密码设置,再到中文支持,一步步实现MySQL 5.7的完美安装。
1. 为什么选择MySQL 5.7而非默认版本
MySQL 5.7作为长期支持(LTS)版本,截至2023年仍然是许多企业应用的首选。与MySQL 8.0相比,5.7版本具有以下优势:
- 稳定性:经过多年生产环境验证,bug更少
- 兼容性:对旧应用的兼容性更好
- 资源占用:内存和CPU消耗相对较低
- 学习曲线:文档和社区支持更成熟
提示:虽然MySQL 8.0带来了许多新特性,但如果你维护的是旧系统或需要特定版本的兼容性,5.7仍然是更稳妥的选择。
2. 安装前的系统准备
在开始安装前,我们需要确保系统环境干净并添加正确的软件源。
2.1 清理可能的旧版本
sudo apt remove --purge mysql* mariadb* sudo apt autoremove sudo apt autoclean sudo rm -rf /etc/mysql /var/lib/mysql2.2 添加MySQL 5.7专用APT源
Ubuntu 22.04默认仓库不再包含MySQL 5.7,我们需要手动添加官方仓库:
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 update3. 安装MySQL 5.7核心组件
现在可以开始安装MySQL服务器和客户端工具:
sudo apt install -y mysql-server mysql-client libmysqlclient-dev安装过程中,系统会提示设置root密码。这是新版安装程序的一个改进,避免了旧版自动生成密码的麻烦。
安装完成后,检查服务状态:
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-05-18 10:23:45 UTC; 1min 23s ago4. 安全配置与密码管理
即使安装时设置了密码,我们仍建议运行安全脚本:
sudo mysql_secure_installation这个脚本会引导你完成以下安全设置:
- 验证密码强度插件
- 移除匿名用户
- 禁止root远程登录
- 移除测试数据库
- 立即重新加载权限表
5. 解决常见安装后问题
5.1 无法用root密码登录
如果你遇到使用设置的密码无法登录的情况,可以尝试以下解决方法:
sudo mysql -u root进入MySQL后执行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码'; FLUSH PRIVILEGES;5.2 修改默认认证插件
MySQL 8.0默认使用caching_sha2_password插件,而5.7使用mysql_native_password。为确保兼容性:
SELECT plugin FROM mysql.user WHERE User = 'root';如果显示不是mysql_native_password,可以修改:
UPDATE mysql.user SET plugin='mysql_native_password' WHERE User='root'; FLUSH PRIVILEGES;6. 配置中文支持与字符集
确保你的MySQL能够正确处理中文数据需要正确配置字符集。
6.1 检查当前字符集设置
SHOW VARIABLES LIKE 'character_set%'; SHOW VARIABLES LIKE 'collation%';6.2 永久修改字符集配置
编辑MySQL配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf在[mysqld]部分添加:
[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci重启MySQL服务使更改生效:
sudo systemctl restart mysql6.3 数据库级别的字符集设置
创建新数据库时指定字符集:
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;或者修改现有数据库:
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;7. 性能调优基础配置
MySQL 5.7默认配置适合开发环境,生产环境需要调整。以下是几个关键参数:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| innodb_buffer_pool_size | 系统内存的50-70% | InnoDB缓冲池大小 |
| max_connections | 100-300 | 最大连接数 |
| innodb_log_file_size | 256M-2G | 日志文件大小 |
| query_cache_size | 0 | 查询缓存大小(MySQL 8.0已移除) |
编辑配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf添加或修改以下内容:
[mysqld] innodb_buffer_pool_size = 1G max_connections = 200 innodb_log_file_size = 256M query_cache_size = 0 query_cache_type = 08. 日常维护与管理技巧
8.1 备份与恢复
使用mysqldump进行备份:
mysqldump -u root -p --all-databases > full_backup.sql恢复备份:
mysql -u root -p < full_backup.sql8.2 监控数据库状态
常用监控命令:
-- 查看运行中的进程 SHOW PROCESSLIST; -- 查看引擎状态 SHOW ENGINE INNODB STATUS; -- 查看系统变量 SHOW VARIABLES; -- 查看系统状态 SHOW STATUS;8.3 定期维护任务
优化表:定期对频繁修改的表进行优化
OPTIMIZE TABLE important_table;检查修复表:特别是非正常关机后
CHECK TABLE important_table; REPAIR TABLE important_table;清理二进制日志(如果启用了二进制日志)
PURGE BINARY LOGS BEFORE '2023-05-01 00:00:00';
9. 升级到MySQL 8.0的注意事项
虽然本文重点介绍MySQL 5.7,但如果你未来考虑升级到8.0版本,需要注意:
- 版本兼容性:检查应用是否支持MySQL 8.0
- 认证插件变更:默认使用caching_sha2_password
- 保留配置:备份my.cnf文件
- 测试环境验证:先在测试环境验证升级过程
- 升级路径:不能直接从5.6升级到8.0,需要先升级到5.7
升级前务必阅读官方升级指南并进行完整备份。