mysql安装报错,提示[ERROR] --initialize specified but the data directory has files in it.

本文解决MySQL安装后启动失败的问题,出现错误提示--initialize specified but the data directory has files in it。通过清空datadir目录下的内容,重启服务,使数据库恢复正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql安装报错,提示[ERROR] --initialize specified but the data directory has files in it.

一、启动报错:

[root@CentOS7 mysql-5.7.27-1.el7.x86_64.rpm-bundle]# systemctl restart mysqld
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
[root@CentOS7 mysql-5.7.27-1.el7.x86_64.rpm-bundle]# systemctl status mysqld.service
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: deactivating (final-sigterm) (Result: exit-code)
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 3090 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=1/FAILURE)
  Process: 3067 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/mysqld.service
           └─3093 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Nov 15 11:24:51 CentOS7.5 systemd[1]: mysqld.service holdoff time over, scheduling restart.
Nov 15 11:24:51 CentOS7.5 systemd[1]: Starting MySQL Server...
Nov 15 11:24:51 CentOS7.5 mysqld_pre_systemd[3067]: 2019-11-15T03:24:51.883600Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. P...etails).
Nov 15 11:24:51 CentOS7.5 mysqld_pre_systemd[3067]: 2019-11-15T03:24:51.889721Z 0 [ERROR] --initialize specified but the data directory has files ...borting.
Nov 15 11:24:51 CentOS7.5 mysqld_pre_systemd[3067]: 2019-11-15T03:24:51.889983Z 0 [ERROR] Aborting
Nov 15 11:24:52 CentOS7.5 systemd[1]: mysqld.service: control process exited, code=exited status=1
Hint: Some lines were ellipsized, use -l to show in full.
[root@CentOS7 mysql-5.7.27-1.el7.x86_64.rpm-bundle]# journalctl -xe
-- 
-- Unit mysqld.service has begun starting up.
Nov 15 11:25:09 CentOS7.5 mysqld_pre_systemd[3437]: 2019-11-15T03:25:09.609186Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use -
Nov 15 11:25:09 CentOS7.5 mysqld_pre_systemd[3437]: 2019-11-15T03:25:09.614965Z 0 [ERROR] --initialize specified but the data directory has files in it. Abor
Nov 15 11:25:09 CentOS7.5 mysqld_pre_systemd[3437]: 2019-11-15T03:25:09.615036Z 0 [ERROR] Aborting
Nov 15 11:25:10 CentOS7.5 mysqld[3460]: Initialization of mysqld failed: 0
Nov 15 11:25:10 CentOS7.5 systemd[1]: mysqld.service: control process exited, code=exited status=1
Nov 15 11:25:11 CentOS7.5 systemd[1]: Failed to start MySQL Server

在这里插入图片描述

二、解决办法:

1.查看配置文件中的datadir的路径

cat /etc/my.cnf

[root@CentOS7 mysql-5.7.27-1.el7.x86_64.rpm-bundle]# cat /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

2.清空/var/lib/mysql文件夹下的内容

cd /var/lib/mysql

[root@CentOS7 mysql-5.7.27-1.el7.x86_64.rpm-bundle]# cd /var/lib/mysql
[root@CentOS7 mysql]# ll
total 122924
-rw-r----- 1 mysql mysql       56 Nov 15 11:24 auto.cnf
-rw------- 1 mysql mysql     1675 Nov 15 11:20 ca-key.pem
-rw-r--r-- 1 mysql mysql     1107 Nov 15 11:20 ca.pem
-rw-r--r-- 1 mysql mysql     1107 Nov 15 11:20 client-cert.pem
-rw------- 1 mysql mysql     1679 Nov 15 11:20 client-key.pem
-rw-r----- 1 mysql mysql      217 Nov 15 11:26 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Nov 15 11:26 ibdata1
-rw-r----- 1 mysql mysql 50331648 Nov 15 11:26 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Nov 15 11:24 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 Nov 15 11:26 ibtmp1
srwxrwxrwx 1 mysql mysql        0 Nov 15 11:26 mysql.sock
-rw------- 1 mysql mysql        5 Nov 15 11:26 mysql.sock.lock
-rw------- 1 mysql mysql     1679 Nov 15 11:20 private_key.pem
-rw-r--r-- 1 mysql mysql      451 Nov 15 11:20 public_key.pem
-rw-r--r-- 1 mysql mysql     1107 Nov 15 11:20 server-cert.pem
-rw------- 1 mysql mysql     1679 Nov 15 11:20 server-key.pem

3.删除里面的数据

rm -rf ./*

[root@CentOS7 mysql]# rm -rf ./*
[root@CentOS7 mysql]# ll
total 122892
-rw-r----- 1 mysql mysql       56 Nov 15 11:26 auto.cnf
-rw-r----- 1 mysql mysql 12582912 Nov 15 11:26 ibdata1
-rw-r----- 1 mysql mysql 50331648 Nov 15 11:26 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Nov 15 11:26 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 Nov 15 11:26 ibtmp1
drwxr-x--- 2 mysql mysql     4096 Nov 15 11:26 mysql
drwxr-x--- 2 mysql mysql     4096 Nov 15 11:26 performance_schema

4.重新启动

systemctl restart mysqld

[root@CentOS7 mysql]# systemctl restart mysqld
[root@CentOS7 mysql]# 

数据库即正常运行了

### 解决 MySQL 初始化时数据目录不为空的问题 当尝试初始化 MySQL 实例并遇到错误 `MY-010457` 表明数据目录不是空的,这通常意味着指定的数据目录已经包含了其他 MySQL 安装或其他数据库系统的文件。为了成功初始化新的 MySQL 实例,需要确保目标数据目录仅包含新实例所需的初始文件。 #### 清理现有数据目录 如果确认旧的数据可以被删除,则可以直接清理该目录: ```bash sudo rm -rf /path/to/data/* ``` 请注意,在执行此操作前务必备份重要数据以防误删[^1]。 对于希望保留原有数据的情况,建议迁移这些数据到另一个位置再重新创建一个新的干净的数据目录用于此次初始化过程。 #### 修改配置文件以适应自定义路径 由于提到数据库进行了定制化设置至本地化的目录,这意味着 PID 文件的位置可能不在默认路径 `/opt/lampp/var/mysql/` 下。因此,在修改或新建 MySQL 配置文件 (`my.cnf`) 中应指明正确的 socket 和 datadir 参数指向实际使用的存储位置: ```ini [mysqld] datadir=/custom/path/to/datadir/ socket=/custom/path/to/mysql.sock pid-file=/custom/path/to/mysqld.pid lower_case_table_names=1 ``` 这里还加入了 `lower_case_table_names=1` 的设定来保证跨平台兼容性问题[^2]。 完成上述更改之后再次运行初始化命令应该能够解决问题。 #### 使用 mysqldump 导入已有数据 如果有之前版本的 MySQL 数据想要迁移到当前环境中,可以通过如下方式导出全部数据库结构与内容,并将其导入到刚刚初始化好的服务器上: ```bash mysqldump -uroot -p --all-databases --routines --events --add-drop-table --force > backup.sql mysql -u root -p < backup.sql ``` 这段脚本会先将所有数据库及其内部对象完整地保存下来,接着通过标准输入的方式加载回 MySQL 服务端[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小胖胖吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值