需要修改MySQL 数据库data 存放位置,发现MySQL Server 8.0 bin目录下无my.ini

该文详细描述了如何备份MySQL数据库的data文件夹,删除并重新安装MySQL服务,配置my.ini文件以更改数据存储位置,初始化数据库,恢复备份的数据,并启动服务的过程。重点提到了my.ini文件的编码问题以及字符集设置。
摘要由CSDN通过智能技术生成

解决思路:

1、备份原数据库data

先cmd命令框,mysql -u root -p进入数据库,查看data存放位置,将D:\MySQL Server 8.0\data\ 目录下的data文件夹备份到其他位置

C:\Users\Administrator> mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql> show variables like '%datadir%';
+---------------+---------------------------+
| Variable_name | Value                     |
+---------------+---------------------------+
| datadir       |C:\MySQL Server 8.0\data\ |
+---------------+---------------------------+
1 row in set, 1 warning (0.00 sec)

2、删除原MySQL服务

cd进入MySQL根目录,先停止服务,再做删除

C:\Users\Administrator> cd C:\Program Files\MySQL\MySQL Server 8.0\bin

C:\Program Files\MySQL\MySQL Server 8.0\bin> net stop mysql80
mysql80 服务正在停止.
mysql80 服务已成功停止。
C:\Program Files\MySQL\MySQL Server 8.0\bin> sc delete MySql80
mysql80 服务正在停止.
mysql80 服务已成功停止。

我的MySQL服务名是MySQL80,若不知道服务名什么,可以在计算机管理查看
在这里插入图片描述

3、配置my.ini

在mysql程序的根目录下C:\Program Files\MySQL\MySQL Server 8.0,新建一个my.ini空白文件,用记事本打开,将以下内容复制进去

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_bin
init_connect='SET NAMES utf8mb4'
# 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
# These are commonly set, remove the # and set as required.
basedir =C:\\Program Files\\MySQL\\MySQL Server 8.0
datadir = D:\\MySQL Server 8.0\\data
port = 3306
# server_id = .....
# 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 = 16M
read_rnd_buffer_size = 16M 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

修改mysql安装目录basedir 和 数据库存放位置datadir

4、重新生成data文件

在cmd窗口执行如下命令,等待20秒:

C:\Program Files\MySQL\MySQL Server 8.0\bin> mysqld --initialize-insecure --user=mysql

若报错

C:\Program Files\MySQL\MySQL Server 8.0\bin> mysqld --initialize-insecure --user=mysql
mysqld: [ERROR] Found option without preceding group in config file C:\Program Files\MySQL\MySQL Server 8.0\my.ini at line 1.
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

说明my.ini编码未保存正确,只需重新保存,选择正确编码即可
在这里插入图片描述
网上很多资料都是让保存编码:UTF-8,但是我只有选择编码为:ANSI,才能生成data成功

5、重新安装mysql服务,同时绑定my.ini配置文件

C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld --install "MySql80" --defaults-file="C:/Program Files/MySQL/MySQL Server 8.0/my.ini"
Service successfully installed.

6、还原有数据库data

将之前备份的data 文件夹,替换D:\MySQL Server 8.0\data\ 目录下 新生成的data 文件夹
在这里插入图片描述

7、启动MySQL服务

最后启动MySQL 服务,mysql -u root -p进入数据库,查看data位置已经修改成功

C:\Program Files\MySQL\MySQL Server 8.0\bin>net start mysql80
MySql80 服务正在启动 .
MySql80 服务已经启动成功。
C:\Program Files\MySQL\MySQL Server 8.0\bin> mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql> show variables like '%datadir%';
+---------------+---------------------------+
| Variable_name | Value                     |
+---------------+---------------------------+
| datadir       |D:\MySQL Server 8.0\data\ |
+---------------+---------------------------+
1 row in set, 1 warning (0.00 sec)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值