MySQL注册表迁移和两种服务模式的切换
二战MySQL
故事背景是我在MySQL里建立的数据库不能和data文件夹同步,
这可能是我的MySQL走的网络服务连接,也可能是my.ini配置文件没写明白,总之我把MySQL切换到本地服务连接模式之后就能同步了。
所以试试切换成数据库本地连接,刚好因为C盘空间真的不够,想着说顺便一块将MySQL迁移到别的盘。
修改MySQL及数据存放位置
C盘空间不足人必修课之一
停止mysql服务
- 本地服务:
net stop mysql
- 网络服务:本地控制面板/管理工具/服务,或者win+r输入services.msc,找到mysql服务右键停止
- 其实本地服务和网络服务都可以在服务面板里打开或停止
- 本地服务:
转移数据文件,换盘放
修改新地址文件中的my.ini文件
主要改这两条,改成新地址
1
2basedir=E:\lenovo\MySQL\MySQL Server 8.0
datadir=E:\lenovo\MySQL\MySQL Server 8.0\data修改注册服务
cmd输入regedit进入注册表编辑器
打开
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/MySQL
文件夹选择ImagePath,指定所修改的my.ini位置
比如我的新地址是–defaults-file=”E:\lenovo\MySQL\MySQL Server 8.0\my.ini”
服务启动
- 本地服务:
net start mysql
- 网络服务:服务面板打开mysql网络服务
- 本地服务:
查看数据库文件存储位置
由于我当时要接入数据库信息,但是找不到文件在哪,这个时候可以在mysql里输入下面命令,会返回位置:(这个时候我还是网络服务连接的数据库)
1 | show global variables like "%datadir%"; |
Data目录初始化
打开mysql文件夹发现,我的文件夹里根本没有Data文件夹😶
没有?那就初始化目录一下
用管理员的身份在终端念出下面的咒语,如果没有报错的话,data文件夹就会现身了
1 | mysqld --initialize |
启动MySQL本地系统连接服务
1 | mysqld -install //注册 |
去查了一下,大部分说的是my.ini配置文件没写明白,可是问题来了,我的mysql8根目录下找不到my.ini文件😶
试过一些方法,还是找不到my.ini(后来知道了怎么勾选查看隐藏文件,不过无所谓,我会新建文件覆盖),我自己建一个my.ini,然后再试试:
好的,直接被拒绝😢
MySQL有分本地系统连接和网络服务连接,大胆推测应该是只能使用一种连接方式连接(?)
我上面的失败是建立在我已经连接了网络服务之后的,在我关闭了网络服务的mysql80之后,就能连接上了
用管理员身份打开终端输入
1 | mysqld --initialize --console |
我根据使用命令之后返回的信息,修改了my.ini文件,然后粉碎掉旧data文件,再重复执行上面的命令,直到不报错,出现A temporary password is generated for root@localhost:xxx
这个是本地系统给你设定的mysql处初始随机密码,一定要记下来!(不然一直密码错误无法登录mysql)
之后mysql -uroot -p随机密码,诶,连上了!
一些踩坑
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
连上mysql之后,测试使用mysql命令的时候又双叒叕给我报错了,OK这题我会,因为是给的是初始随机密码,所以肯定要设置一个新密码
1 | set password='你的新密码'; |
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost:3306’ (10061)
见过好几次这个报错,我推测这个报错应该就是没接上mysql服务(?)
上面第一张图应该是昨天连接数据库太频繁了,给我卡住了,连不上(?)
第二张是今天特地重启了一次电脑才开始连接,就莫名其妙地,成功了
ERROR 1045 (28000): Access denied for user ‘root‘@’localhost’ (using password: YES)
这个大概率是密码问题,这条报错最后面写(using password:NO)的话就是没输入密码
(using password: YES)大概率就是密码错误了
主要是之前我一直用的网络连接,现在转成了本地连接,没想到系统会给我初始随机密码,所以我就是一直输入旧密码一直报错😢
ERROR MySQL服务启动后停止
这个大概就是昨天操作太频繁了,我一会连接一会又停止它,它大概是不开心了,给我发黄牌警告呢🤐
总结就是重启大法好。
my.ini配置文件
比较多的说法是可以从mysql文件夹里点开查看部分,勾选查看隐藏的项目就能看到my,ini文件,但是我当时没找到,所以是新建my.ini文件覆盖旧文件来解决的问题
我用的是mysql8,根据mysqld --initialize --console
返回的信息修改了我原本的my.ini文件 提一些需要注意的点:
1 | [mysqld] |