在 Linux 云服务器(CentOS 7/Ubuntu 20.04)安装 MySQL 8.0 时,常见的兼容性问题包括:
1. 系统依赖库问题
CentOS 7
# 常见错误:libcrypto.so.10/libssl.so.10 缺失
# 解决方案:
yum install openssl-devel
# 或创建软链接(如果已安装新版本)
ln -s /usr/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.10
Ubuntu 20.04
# 通常依赖问题较少,但可能缺少:
apt-get install libaio1 libnuma1 libtinfo5
2. 旧版本残留冲突
# 彻底卸载旧版本(CentOS)
rpm -qa | grep mysql
rpm -e --nodeps mysql-*
yum remove mysql mysql-server
# Ubuntu/Debian
apt-get purge mysql-* mariadb-*
rm -rf /etc/mysql /var/lib/mysql
3. 默认认证插件变更
MySQL 8.0 默认使用 caching_sha2_password
-- 兼容旧应用可修改为 mysql_native_password
ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password BY 'password';
-- 或在 my.cnf 中配置
[mysqld]
default_authentication_plugin=mysql_native_password
4. 配置文件位置差异
CentOS 7
/etc/my.cnf
/etc/my.cnf.d/
Ubuntu 20.04
/etc/mysql/my.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
5. systemd 服务管理
CentOS 7 可能遇到的问题
# 服务启动失败时检查
journalctl -xe
# SELinux 可能导致问题
setenforce 0 # 临时关闭
# 或添加正确的上下文
semanage fcontext -a -t mysqld_db_t "/var/lib/mysql(/.*)?"
6. 字符集和排序规则
MySQL 8.0 默认使用 utf8mb4 和 utf8mb4_0900_ai_ci
-- 检查并修改
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
7. 安装方法选择
推荐方案:
# CentOS 7
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
yum install mysql-community-server
# Ubuntu 20.04
wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
dpkg -i mysql-apt-config_0.8.22-1_all.deb
apt-get update
apt-get install mysql-server
8. 防火墙配置
# CentOS 7
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
# Ubuntu 20.04
ufw allow 3306/tcp
9. 数据目录权限
# 常见错误:无法写入数据目录
chown -R mysql:mysql /var/lib/mysql
chmod 750 /var/lib/mysql
10. 内存和性能调优
MySQL 8.0 内存需求较高,云服务器需注意:
- 至少 2GB RAM 推荐
- 调整 InnoDB 缓冲池大小
[mysqld] innodb_buffer_pool_size = 256M # 根据可用内存调整
安装检查清单
- 确认系统版本:
cat /etc/os-release - 检查端口占用:
netstat -tlnp | grep 3306 - 验证安装:
mysql --version - 查看日志:
tail -f /var/log/mysqld.log(CentOS) 或/var/log/mysql/error.log(Ubuntu)
快速排错命令
# 查看错误日志
sudo tail -50 /var/log/mysqld.log # CentOS
sudo tail -50 /var/log/mysql/error.log # Ubuntu
# 检查服务状态
systemctl status mysqld # CentOS
systemctl status mysql # Ubuntu
# 获取临时密码(首次安装)
sudo grep 'temporary password' /var/log/mysqld.log
建议先备份重要数据,在测试环境验证后再在生产环境部署。
CLOUD技术笔记