mysql更改了数据库存储路径后,出现错误1067 进程意外终止

本文记录了一次MySQL服务启动失败的排查过程,包括解决端口占用、重装MySQL、配置datadir路径等问题,并最终定位到内置数据库丢失导致的服务启动失败。

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

以前机子上装了64位的mysql,后卸载后清除了注册表,安装了32位的mysql。
默认的数据库存储路径是C:\ProgramData\MySQL\MySQL Server 5.5\data,
我在my.ini 中修改为datadir="D:/mysql_data/"


然后重新启动数据库服务就出现如下错误:

“windows 无法启动 mysql服务 错误1067 进程意外终止”


网上解决方法一坨一坨的,还有这种大全。。。http://blog.sina.com.cn/s/blog_4b75bfbb01008r0w.html 

我想说,“虽然哥的方法多 不要盲目相信哥 ”  ,别如。。。


1. 这篇文中第一个解决方法“c:\mysql\bin\mysqladmin-u root -p shutdown”,

我在今天重装后,也更改了密码,我开始也以为用这个方法能解决。但是发现使用了这个语句后,从mysql conmmand line client可以不输入密码就直接打开,感觉着货的存在很灵异。 然后我查了我的3306端口号是否被占用(命令: netstat -ano | findstr "3306"),居然被占用了,pid是6916。然后我在任务管理器里面找pid为6916的服务,找不到。然后我查找该pid的映射名 (tasklist/FI "PID eq 6916"), 结果对应的映射名是 mysqld.exe, 使用上述的命令没关掉,再进任务管理器里杀掉该进程。依旧不能启动。

以上仅提供了端口号被占用 强制关闭mysql方法。。。


2. 我把navicat卸载,也从注册表里删干净了(这在关不掉mysql时候,以为跟相关的软件有关)


3. 我也尝试了修改default-storage-engine=MyISAM,网上各种方法,感觉没有适合自己的一款。。


然后,我万念俱灰得重装了mysql。

        a. 如果你决定重装mysql,一定要删除干净!否则可能像我一样,装了十几遍。。。

删除原来装的卸载后的剩余文件及其目录;删除存储数据库文件的路径,可先转移;在C盘搜索mysql,能删了都删了;删除注册表

在注册表里(regedit)清除你的MYSQL服务。有几个地方:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL 目录删除;
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL 目录删除;
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL 目录删除;

        b. 配置时,切记不要修改密码,modify security settings 那个勾去掉

c. 安装好了后,可参考http://blog.youkuaiyun.com/someonelikesyou/article/details/10794025 进行重设密码。

如果可以通过command line 不输入密码直接回车 进入mysql,那就直接改密码,从use mysql , update ....开始即可。


==================以下是我真正的问题和解决方法===============================  

4. 重装后,更改了datadir后 还是报错。

我手动建立了这个datadir路径:D:/mysql_data/,

再尝试启动服务,这个路径下就会有报错的信息了。

打开**-PC.err

然后出现如下错误:


D:\Program Files (x86)\MySQL\MySQL Server 5.5\bin\mysqld: Table 'mysql.plugin' doesn't exist
131223 16:19:47 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
131223 16:19:47 InnoDB: The InnoDB memory heap is disabled
131223 16:19:47 InnoDB: Mutexes and rw_locks use Windows interlocked functions
131223 16:19:47 InnoDB: Compressed tables use zlib 1.2.3
131223 16:19:47 InnoDB: Initializing buffer pool, size = 1002.0M
131223 16:19:47 InnoDB: Completed initialization of buffer pool
131223 16:19:47 InnoDB: highest supported file format is Barracuda.
InnoDB: Log scan progressed past the checkpoint lsn 49439
131223 16:19:47  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 1595675
131223 16:19:48  InnoDB: Starting an apply batch of log records to the database...
InnoDB: Progress in percents: 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 
InnoDB: Apply batch completed
131223 16:19:49  InnoDB: Waiting for the background threads to start
131223 16:19:50 InnoDB: 1.1.8 started; log sequence number 1595675

131223 16:19:50 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

mysql服务启动时候找不到内置数据库“mysql”,找不到那张表,就包了上述错误。 

解决办法:将安装目录或之前的目录里面的“mysql”数据库拷贝到新的数据库文件存放目录即可

即C:\ProgramData\MySQL\MySQL Server 5.5\data\或者D:\Program Files (x86)\MySQL\MySQL Server 5.5\data 目录下的mysql文件夹拷入D:/mysql_data/ ,

再重新启动服务,终于不报错了!

普大奔喜 泪流满面~~~~~



小总结下:

1. 不要盲目的看错误的号码查解决方法,去看日志

2. 菜鸟也有春天!




### 更改 MySQL 数据库的数据存储路径 为了更改 MySQL 的数据存储路径,需执行一系列操作来确保迁移过程顺利进行并保持数据库的正常运行。 #### 1. 验证当前数据目录的位置 通过启动交互式的 MySQL 会话可以确认现有的数据文件夹位置。这一步骤对于后续的操作至关重要[^1]: ```bash mysql -u root -p ``` 进入命令行界面后,可以通过查询 `@@datadir` 变量获取现有数据目录的具体位置: ```sql SHOW VARIABLES LIKE 'datadir'; ``` #### 2. 停止 MySQL 服务 在修改配置前,停止正在运行的服务以防止任何潜在的数据损坏风险。根据操作系统不同,可采用如下方式暂停服务: - 对于基于 Systemd 的 Linux 发行版: ```bash sudo systemctl stop mysqld.service ``` - 或者使用旧版本 init 脚本的方式: ```bash sudo service mysql stop ``` #### 3. 移动原有数据至新位置 创建目标文件夹并将原始数据复制过去。假设新的存放地址为 `/new/path/to/mysql/data`: ```bash sudo mkdir -p /new/path/to/mysql/data sudo rsync -av /var/lib/mysql/ /new/path/to/mysql/data/ ``` 注意:这里假定默认的数据目录位于 `/var/lib/mysql/` 下;实际环境中应替换为此处显示的实际路径。 #### 4. 更新 MySQL 配置文件 编辑 MySQL 主要配置文件(通常是 my.cnf 或 my.ini),找到 `[mysqld]` 段落下的 datadir 参数,并将其指向新的路径: ```ini [mysqld] datadir=/new/path/to/mysql/data socket=/new/path/to/mysql/mysql.sock ``` 同时更新 socket 文件路径以便客户端能够正确连接到服务器实例。 #### 5. 设置权限与所有权 确保 MySQL 进程拥有对新数据目录及其子项读写的适当访问权: ```bash sudo chown -R mysql:mysql /new/path/to/mysql/data sudo chmod 700 /new/path/to/mysql/data ``` 这里的 "mysql:mysql" 是指 MySQL 用户名和组名,在某些安装中可能会有所不同,请依据实际情况调整。 #### 6. 启动 MySQL 并验证变更效果 完成上述设置之后重新开启 MySQL 服务,并再次检查 `datadir` 是否已成功更改为预期的新值: ```bash sudo systemctl start mysqld.service mysql -u root -p -e "SHOW VARIABLES WHERE Variable_name = 'datadir';" ``` 如果一切正常,则说明已经顺利完成 MySQL 数据存储路径的转移工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值