windows环境MySQL8.0的data目录变更方法及问题

本文详细介绍如何将Windows环境下MySQL 8.0的数据目录(datadir)从C盘迁移到E盘,包括关闭服务、剪切文件夹、修改配置文件my.ini及重新启动数据库的步骤。

windows环境安装MySQL8.0,默认安装在C盘的。

basedir是:C:\Program Files\MySQL\MySQL Server 8.0\bin

datadir 是:C:\ProgramData\MySQL\MySQL Server 8.0\data   #这是一个隐藏文件夹

现在想把datadir迁移到E盘,做法是:

1、关闭数据库服务

cd C:\Program Files\MySQL\MySQL Server 8.0\bin
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqladmin -uroot -piris shutdown

 

2、将整个data目录剪切到E盘相应文件夹(我在E盘下新建了一个Mysql文件夹,E:\mysql)下:

将原data文件夹整个剪切到mysql下。

新的datadir是:E:\mysql\Data。

并在mysql下新建 “tmp_data”和“slave_data”两个文件夹,为参数tmpdir和slave_load_tmpdir的值。

tips:注意新的Mysql和data文件夹的权限处理。

 

3、修改配置文件my.ini:

修改datadir的路径后,修改my.ini配置文件。

my.ini的配置文件应该在“C:\Program Files\MySQL\MySQL Server X.Y\ ”  目录下。   #X.Y代表MySQL的版本号

我的配置文件是:C:\Program Files\MySQL\MySQL Server 8.0\my.ini

补充:

1.有关于datadir路径更换的配置内容主要如下

basedir=C:/Program Files/MySQL/MySQL Server 8.0/bin
datadir=E:/mysql/Data
tmpdir=E:/mysql/tmp_data
slave_load_tmpdir=E:/mysql/slave_data
lc-messages-dir=C:/Program Files/MySQL/MySQL Server 8.0/share   #错误消息文件存在的目录
lc-messages="en_US"         #错误消息的语言环境。默认是 en_US。可将参数转换为其他语言
log_timestamps=SYSTEM       #错误日志显示的时间
secure-file-priv=E:/mysql/Uploads 
general-log=0       #关闭普通日志
general_log_file=e:/mysql/data/iris_bin.log       #二进制文件
slow_query_log_file=e:/mysql/data/iris-slow.log   #慢日志文件
slow-query-log=1   #慢查询时间阈值
long_query_time=1  
exec_time=20 #SQL执行超过20秒自动终止
# Binary Logging.
log-bin=e:/mysql/data/iris-bin
log-error=e:/mysql/data/iris-err.err 
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO" 
default_authentication_plugin=mysql_native_password  #修改用户的身份验证插件。原默认用户身份验证插件是caching_sha2_password,安全性和性能都较好,但是不支持8.0一下版本的客户端&连接器

2、指定了log_timestamps=system的影响:

log_timestamps,错误日志显示时间,指定为system,即我的是"+8:00"(因为windows环境的system_time_zone就是我计算机的时间,北京时间)。

配置前后错误日志内容如下:

  • 配置前:2018-12-13T02:44:24.378145Z 0
2018-12-13T02:44:20.021582Z 0 [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.13) starting as process 143496
2018-12-13T02:44:20.021686Z 0 [ERROR] [MY-010338] [Server] Can't find error-message file 'C:\Program Files\MySQL\MySQL Server 8.0\bin\share\errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.
2018-12-13T02:44:24.378145Z 0 [ERROR] [MY-010119] [Server] Aborting
  • 配置后:2018-12-13T11:29:00.337768+08:00 0
2018-12-13T11:29:00.337768+08:00 0 [ERROR] [MY-010361] [Server] Fatal error: Illegal or unknown default time zone 'UCT'
2018-12-13T11:29:00.342668+08:00 0 [ERROR] [MY-010119] [Server] Aborting
2018-12-13T11:29:32.462444+08:00 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.

4、修改完配置文件后,直接启动数据库即可

C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld

tips:

针对data文件夹整个的迁移,如果不修改my.ini配置文件也是可以的。

每次启动的时候带上--datadir=data_dir_comm就行,即:

C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld --datadir=e:\mysql\data

而且,我的my.ini位子并没有挪动,如果my.ini文件也迁移 了、位子也变了,那么启动的时候一定要带上--defaults-file参数。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

其他:关于“iris_err.err错误日志”显示时间例子里两段日志内容补充说明:(都是粗心导致的报错(ಥ﹏ಥ))

问题1:

Can't find error-message file 'C:\Program Files\MySQL\MySQL Server 8.0\bin\share\errmsg.sys'-->找不到错误消息的文件,路径错误

解决:

改为:Can't find error-message file 'C:\Program Files\MySQL\MySQL Server 8.0\share\'

share下面都是各种语言系统的报错文件,指定到share。

配置文件里面 lc-messages-dir和lc-messages,一般是配套使用的,一个记录路径,一个在选择路径下众多语言里选一个。

当然,指定了lc-messages-dir,不写lc-messages也是可以的。lc-messages默认是“en_US”。

 

问题2:

Fatal error: Illegal or unknown default time zone 'UCT''-->指定的默认时区值是不合法的(也就是不存在这样的值,)

解决:

配置文件my.ini中指定的系统默认时区值有误,正确写法是UTC。但我的配置文件里改成“+0:00”、“+8:00”的值等模式。使用UTC这种时区名字需要在time_zone_name表里有对应关系才行,因为我的MySQL的time_zone_name表是空的。

 

 

<think>嗯,用户需要解决Windows环境MySQL 8.0忘记密码的问题。根据引用内容,官方方法是通过init-file重置密码,但不同引用提供的方法有些差异。用户可能已经尝试过某些方法但未成功,需要更可靠的方案。 从引用[1]看,官方推荐步骤最完整:停止服务→创建密码文件→用mysqld.exe加载初始化文件。但要注意两点:一是必须使用管理员终端,二是路径中的反斜杠需要转义。引用[3][5]提到的--skip-grant-tables方法8.0版本可能不适用,这点需要特别提醒用户。 用户可能是开发人员或数据库初学者,对命令行操作可能不熟悉。需要强调关键细节:比如必须用管理员权限运行终端,路径中的斜杠处理,以及不同安装方式(Installer安装包与压缩包)的参数差异。特别是引用[1]中指出的--defaults-file参数值要从服务属性中获取,这点容易被忽略。 考虑到操作风险,在回答中补充了常见错误处理:比如端口占用问题(步骤5),以及提示用户修改密码后立即删除初始化文件(安全考虑)。最后生成的三个相关问题覆盖了后续可能遇到的登录验证、特殊字符密码设置等实际场景。 准备将操作步骤拆解为6步,每步用明确动作语句("停止服务""创建文件"等),避免使用技术术语缩写。对于关键命令,直接展示PowerShell和CMD两种终端的写法,降低用户操作门槛。 </think>以下是针对 **Windows 环境MySQL 8.0 忘记密码**的标准解决方案,综合官方文档和实测有效流程整理: --- ### **操作步骤** #### 1. **停止 MySQL 服务** - 按 `Win + R`,输入 `services.msc` 打开服务管理器 - 找到 `MySQL80`(或类似名称),右键 → **停止** - *或管理员终端执行:* ```powershell net stop mysql80 ``` #### 2. **创建初始化文件** - 在 `C:\` 根目录新建文本文件 `mysql-init.txt` - 写入重置命令(替换 `新密码`): ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; ``` - **保存后关闭文件** #### 3. **启动 MySQL 并加载初始化文件** - **管理员身份**打开终端(CMD 或 PowerShell) - 进入 MySQL 的 `bin` 目录(根据你的安装路径调整): ```powershell cd "C:\Program Files\MySQL\MySQL Server 8.0\bin" ``` - 执行命令(**注意转义路径**): ```powershell # PowerShell(需 ./ 前缀): ./mysqld.exe --defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 8.0\\my.ini" --init-file=C:\\mysql-init.txt # CMD(无 ./ 前缀): mysqld.exe --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file=C:\mysql-init.txt ``` - **说明**: - `--defaults-file` 路径需从服务属性中查看(参考引用[1]) - 若压缩包安装,可省略此参数(引用[1][5]) #### 4. **重启服务并登录** - 关闭当前终端窗口(终止 `mysqld` 进程) - 重启服务: ```powershell net start mysql80 ``` - 用新密码登录: ```powershell mysql -u root -p ``` #### 5. **删除初始化文件(安全必做)** - 删除 `C:\mysql-init.txt`,避免密码泄露 --- ### **常见问题处理** - **端口占用错误**:确保第一步已彻底停止服务(任务管理器结束 `mysqld.exe`)。 - **路径错误**:`--defaults-file` 需指向正确的 `my.ini`(可在服务属性中确认路径)[^1]。 - **语法报错**:初始化文件内容需为纯 SQL 语句,无多余字符或空格。 - **MySQL 8.0 权限变更**:早期版本 `skip-grant-tables` 方法可能失效(引用[2][3]),优先使用此方案。 --- ### **相关问题** 1. **重置密码后仍无法登录 MySQL 8.0,如何排查?** (检查服务状态、端口冲突、错误日志 `data\hostname.err`) 2. **MySQL 8.0 密码策略导致简单密码被拒绝,如何修改?** (临时降低策略强度:`SET GLOBAL validate_password.policy=LOW;`) 3. **非 `root` 用户忘记密码,如何重置?** (步骤 2 中替换用户名:`ALTER USER 'username'@'localhost' IDENTIFIED BY '新密码';`) > 提示:操作涉及系统权限,请全程使用**管理员终端**执行命令[^1][^3]。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值