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/

图形用户界面, 文本

AI 生成的内容可能不正确。

# 确认没有其他 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

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐