Linux Centos strem9 一键卸载mysql 8.4.7并重装到指定盘
3. 检查当前配置文件
# 查看 MySQL 配置文件
cat /etc/my.cnf
# 如果有多个配置文件,查看加载顺序
mysqld --verbose --help | grep -A 1 "Default options"
# 查看当前 MySQL 实际使用的配置
mysql --print-defaults
4. 确认正确的数据目录
# 如果 MySQL 正在运行,可以查看实际使用的数据目录
mysql -e "SHOW VARIABLES LIKE 'datadir';"
# 查看 MySQL 错误日志,确认启动时的配置
tail -50 /var/log/mysqld.log
5. 解决方案:清理并重新安装到指定位置
方案A:保留现有数据(如果已存在重要数据)
# 1. 停止所有 MySQL 服务
systemctl stop mysqld
pkill -9 mysql
pkill -9 mysqld
# 2. 备份当前数据
mkdir -p /backup/mysql_data
cp -rp /var/lib/mysql /backup/mysql_data/ 2>/dev/null || true
cp -rp /lib/mysql /backup/mysql_data/ 2>/dev/null || true
cp -rp /lib/mysql_data /backup/mysql_data/ 2>/dev/null || true
# 3. 查看并记录当前数据目录的内容
ls -la /var/lib/mysql/ 2>/dev/null
ls -la /lib/mysql/ 2>/dev/null
ls -la /lib/mysql_data/ 2>/dev/null
方案B:完全清理后重新安装
# 1. 完全卸载现有的 MySQL
systemctl stop mysqld
systemctl disable mysqld
# 2. 列出并卸载所有 MySQL 相关包
rpm -qa | grep -i mysql | xargs rpm -ev --nodeps 2>/dev/null || true
# 3. 删除所有残留的 MySQL 目录
rm -rf /var/lib/mysql
rm -rf /lib/mysql
rm -rf /lib/mysql_data
rm -rf /usr/lib/mysql
rm -rf /usr/lib64/mysql
rm -rf /etc/my.cnf
rm -rf /etc/my.cnf.rpmsave
rm -rf /var/log/mysqld.log
# 4. 删除 MySQL 用户和组
userdel -r mysql 2>/dev/null || true
groupdel mysql 2>/dev/null || true
# 5. 清理 yum 缓存
yum clean all
rm -rf /var/cache/yum
6. 重新安装到指定目录
按照您的要求安装到 /mnt/YnmMysql_data:
# 1. 创建数据目录
mkdir -p /mnt/YnmMysql_data/mysql
chown -R mysql:mysql /mnt/YnmMysql_data/mysql
chmod 750 /mnt/YnmMysql_data/mysql
# 2. 按顺序安装已下动下载的 RPM 包
cd /var/mysql847/
rpm -ivh mysql-community-common-8.4.7-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.4.7-1.el8.x86_64.rpm
rpm -ivh mysql-community-libs-8.4.7-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-8.4.7-1.el8.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.4.7-1.el8.x86_64.rpm
rpm -ivh mysql-community-server-8.4.7-1.el8.x86_64.rpm
# 3. 修改 MySQL 配置文件
cat > /etc/my.cnf << EOF
[mysqld]
datadir=/mnt/YnmMysql_data/mysql
socket=/mnt/YnmMysql_data/mysql/mysql.sock
log-error=/mnt/YnmMysql_data/mysql/mysqld.log
pid-file=/mnt/YnmMysql_data/mysql/mysqld.pid
# 字符集设置
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
# 连接设置
max_connections=1000
connect_timeout=60
# InnoDB 设置
innodb_buffer_pool_size=1G
innodb_log_file_size=256M
innodb_flush_log_at_trx_commit=1
innodb_file_per_table=ON
[client]
socket=/mnt/YnmMysql_data/mysql/mysql.sock
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
EOF
# 4. 初始化数据库
mysqld --initialize --user=mysql --datadir=/mnt/YnmMysql_data/mysql
# 5. 获取临时密码
temp_password=$(grep 'A temporary password' /mnt/YnmMysql_data/mysql/mysqld.log | awk '{print $NF}')
echo "临时密码: $temp_password"
# 6. 修改目录权限
chown -R mysql:mysql /mnt/YnmMysql_data/mysql
chmod 750 /mnt/YnmMysql_data/mysql
# 7. 修改 systemd 服务文件
cat > /etc/systemd/system/mysqld.service.d/override.conf << EOF
[Service]
ReadWritePaths=/mnt/YnmMysql_data/mysql
EOF
systemctl daemon-reload
# 8. 启动 MySQL
systemctl start mysqld
systemctl enable mysqld
# 9. 修改 root 密码
mysql -uroot -p"$temp_password" --connect-expired-password << EOF
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Li880602.';
FLUSH PRIVILEGES;
EOF
7. 验证安装
# 查看 MySQL 版本
mysql --version
# 查看数据目录
mysql -e "SHOW VARIABLES LIKE 'Datadir';"
# 查看服务状态
systemctl status mysqld
# 查看实际使用的数据目录
ls -la /mnt/YnmMysql_data/mysql/

# 确认没有其他 MySQL 进程
ps aux | grep mysql
8. 清理旧的符号链接(如果有)
# 检查是否有旧的符号链接
ls -la /var/lib/mysql
ls -la /lib/mysql
ls -la /lib/mysql_data
# 如果有,删除它们
rm -f /var/lib/mysql
rm -f /lib/mysql
rm -f /lib/mysql_data
更多推荐

所有评论(0)