使用的这么长时间的mysql,有一天我突然需要使用mysql 的配置文件my.ini时发现没有这个文件并且这个文件不是被隐藏了。
查看自己的mysql中是否有my.ini,也可能是这个文件是隐藏文件你没有设置可以查看隐藏文件
一般情况下mysql都是安装在C:\Program Files\MySQL\MySQL Server 5.7这个地方,我之前好像是用的安装包搞的mysql所以没有my.ini这个文件。这个文件是关于mysql一个重要配置文件。如果没有的话可以这样。
![](https://i-blog.csdnimg.cn/blog_migrate/4be2fdae0329e7e0d6c634750763fce3.png)
这个我也是看别人的文章搞的。
注意,在你准备把my.ini这个文件搞出来之前先把你之前数据库中的数据都转储sql一下因为,因为在这个过程中会删掉data文件,并且关闭sql服务。所以之前的数据会全部被抹除掉。
恢复my.ini第一步:
备份本地数据,咋备份。直接用Navicat转储sql就行。
恢复my.ini第二步:
在mysql的bin目录下输入cmd然后回车。
![](https://i-blog.csdnimg.cn/blog_migrate/c9b2b4caa9b3d875cb9410015e634021.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2f7a329b8035d1d6985a2772badeb7a8.png)
恢复my.ini第三步:
进入命令窗口:
![](https://i-blog.csdnimg.cn/blog_migrate/bf5d11fef9e5e52c82d16f040c911c76.png)
恢复my.ini第四步:
删除MySQL服务命令:sc delete服务名。
服务名如何查看。
有好多种办法,第一种是直接凭感觉找。
![](https://i-blog.csdnimg.cn/blog_migrate/b079860c3f35060eaeaf6f4fefb7569e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3a67c47b9e7a4c39d48dce67cddf6878.png)
第二种就是使用mysql的端口号查找。
3306是mysql默认端口号。win+R 输入cmd 进入命令行。输入一下命令。
netstat -ano | findstr 3306
![](https://i-blog.csdnimg.cn/blog_migrate/2b38ec434ad733b1602337bcf4e25680.png)
找到服务名后输入一下命令:
#MySql57是我的服务名
sc delete MySql57
执行这条命令后MySql57这个服务在在服务中就被删除了。
确实想要截图命令的话我可以把之前的从服务从新搞一遍,因为主服务里有好多数据如果搞我主服务还要备份。从数据库的操作和主数据库一样。只是名字不一样。接下来我就以从服务。给大家截个图。从服务的服务名是mysqls1
![](https://i-blog.csdnimg.cn/blog_migrate/59f4e0389677098faf11ec78a901d90c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ae7abc94534b8c402899692807eaf90a.png)
删之前要把服务给停了!
如果出现第二种情况一种原因是服务名错了。另一种就是你已经给删了。第二种情况如果在服务中找不到这个服务名说明你已经删除了。
恢复my.ini第五步:在mysql根目录下新建文件,文件名命名为my.ini
![](https://i-blog.csdnimg.cn/blog_migrate/ab279b8bf8591c256416f7d56c23b98e.png)
恢复my.ini第六步:在my.ini中编辑一下内容。
basedir 和 datadir 这两个配置要根据你实际的mysql路径进行编辑
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8
init_connect='SET NAMES utf8'
# 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.
#注意这个地方要和你安装mysql的路径保持一致。
basedir = C:\Program Files\MySQL\MySQL Server 5.7
datadir = C:\Program Files\MySQL\MySQL Server 5.7\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
skip-grant-tables
恢复my.ini第七步:在mysql中生成新的data文件
在mysql的bin目录下输入cmd回车然后输入一下命令行。
mysqld --initialize-insecure --user=mysql
![](https://i-blog.csdnimg.cn/blog_migrate/2dfcb9d5e022861341e3149206d35e05.png)
出现这种报错是你没有把之前的data文件删除。
![](https://i-blog.csdnimg.cn/blog_migrate/5c4190d98b6f844f03fb3b4b38ae31dd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6525c87b10ceabe0d810a0de03e89fd7.png)
出现这种情况我一般使用火绒直接粉碎。
![](https://i-blog.csdnimg.cn/blog_migrate/2728bc218dc51f82c98a741d8868cf51.png)
出现这个错那么大概是因为你my.ini中的这两条配置不对。
basedir = C:\Program Files\MySQL\MySQL Server 5.7-s1
datadir = C:\Program Files\MySQL\MySQL Server 5.7-s1\data
删除后在执行
![](https://i-blog.csdnimg.cn/blog_migrate/2dc7ec44a329dd9888e71e793a3b9b13.png)
![](https://i-blog.csdnimg.cn/blog_migrate/70313364e6c411d8ca58d6e132a3e0d3.png)
恢复my.ini第八步:重新生成mysql服务,同时绑定my.ini配置文件
输入一下命令。
mysqld --install "MySql57" --defaults-file="C:/Program Files/MySQL/MySQL Server 5.7/my.ini"
![](https://i-blog.csdnimg.cn/blog_migrate/d149895a5e33564f7945289a707ae112.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7dd925e3f7096d815f8890c4539a5e09.png)
如果无法启动成功重复上面的步骤。不要怕大胆干反也损失不了啥!
重复了好几遍还是不行那大概是端口冲突了吧,把my.ini文件的3306随便改一个。
恢复my.ini第九步:进入mysql修改密码
登录mysql,输入此命令。因为服务刚刚删了所以不用输入密码。
mysql -u root -p
直接回车
进入mysql后,输入
use mysql;
然后再输入
update mysql.user set authentication_string=password("123456") where user="root";
然后刷新权限并退出
flush privileges;
Quit