Linux 云服务器(如 CentOS 7/Ubuntu 20.04)安装 MySQL 8.0 有哪些常见兼容性问题?

在 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 默认使用 utf8mb4utf8mb4_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  # 根据可用内存调整

安装检查清单

  1. 确认系统版本:cat /etc/os-release
  2. 检查端口占用:netstat -tlnp | grep 3306
  3. 验证安装:mysql --version
  4. 查看日志: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

建议先备份重要数据,在测试环境验证后再在生产环境部署。

云服务器