比如我们修改了my.ini文件的secure_file_priv变量的值如何让其真正生效?
现在先看下我们系统中的secure_file_priv变量的值
进入mysql输入代码如下
show global variables like 'secure_file_priv';
上面是一句mysql代码所以必须在mysql环境中执行。
从上面可以看到当前mysql中变量secure_file_priv的值是一个路径C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\
,如果这个变量是一个路径值,那你就必须把csv文件上传到这个路径才能够正常使用load命令进行上传否则就会有错误提示。
我们设定secure_file_priv的值得时候有三种选择,分别是三个不同的结果
用记事本方式或者notepad++打开C:\ProgramData\MySQL\MySQL Server 8.0下面的my.ini文件,我们搜索secure(注意不要搜secure_file_priv,否则你搜不到),搜索结果如下:
# Secure File Priv.
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.0/Uploads"
这里在我们的搜索结果里,我看到只有这一处出现了给secure-file-priv复制的情况,其他地方没有出现,因此我们只需要改这一个地方的值肯定正确,我们往上翻看,会发现这这个赋值是出现在[mysqld]的下面,如果你的这个赋值在文中出现多次,并且有的赋值在[mysqld]下面,有的不在,那请你修改[mysqld]下面的secure-file-priv值。
我这里情况就比较简单了,我们进行如下修改然后保存这个文件
secure-file-priv=""
然后保存并关闭,我们的my.ini文件
注意这里仅仅是修改了这个文本文件,但这个修改还没有真正起作用,如果你用show 命令去看变量secure_file_priv的值,还是以前的路径值,如何让我们这个修改生效呢。
首先打开我们的mysql服务列表,然后查看那个mysql服务是与这个my.ini文件关联的,也就是看哪个mysql服务是根据这个my.ini文件进行配置的。
到了mysql服务列表页面我们选择一个mysql服务,然后右键点击选择属性,可以看到这个服务的关联ini文件。
可以看到我们创建了好几个mysql服务,但是只能启动其中的一个mysql服务,目前mysqldd服务处于启动状态,我们首先要停止所有的mysql服务
可以在这里点击暂停,如果不管用,可以打开一个cmd窗口输入:net stop mysqldd
这样mysqldd服务就停止了,所有的mysql服务都处于停止状态。
然后我们选择一个mysql服务,然后右键点击选择属性,比如我们选择mysql80服务
把属性中的可执行文件的路径截图,并把文字发过来
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" MySQL80
从这里可以看到mysql80这个mysql服务是与"C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" 关联的,如果我们修改了这个my.ini文件,然后再启动mysql80服务,我们的修改就会生效,我们试一下。
启动mysql80服务
cmd窗口输入net start mysql80
C:\Windows\system32>net start mysql80
MySQL80 服务正在启动 .
MySQL80 服务无法启动。
服务没有报告任何错误。
请键入 NET HELPMSG 3534 以获得更多的帮助。
查看:1.现在其他的mysql服务都处于停止状态
2.这个cmd窗口是以管理员身份打开的
实在不知道无法启动服务是什么原因导致的
我们输入mysqld --console查看导致这个结果的具体原因
C:\Windows\system32>mysqld --console
2021-02-20T00:30:47.291318Z 0 [System] [MY-010116] [Server] C:\Program Files\MyS
QL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.18) starting as process 66520
2021-02-20T00:30:47.317320Z 1 [ERROR] [MY-011011] [Server] Failed to find valid
data directory.
2021-02-20T00:30:47.318320Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initi
alization failed.
2021-02-20T00:30:47.319320Z 0 [System] [MY-010910] [Server] C:\Program Files\MyS
QL\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld 8.0.18) MySQL Com
munity Server - GPL.
上面的意思是我们找到的data路径是无效的,我们把C:\Program Files\MySQL\MySQL Server 8.0\data这个文件夹下的内容清空,然后再重新启动mysql80服务
我们重新创建一个空白的data文件夹发现还是不行,删除那个data文件夹也不行
如果我们在服务列表页面尝试启动mysql80就会提示本地计算机上的mysql80服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止
考虑到这一系列怪事都是出现在修改my.ini文件之后我们把我们的my.ini文件用notepad++打开,将编码转为ansi,然后保存关闭。
然后重新执行
net start mysql80
这次终于启动成功了。
我们进入mysql再查看一下我们的secure_file_priv变量的值
可以看到现在secure_file_priv的值已经是一个空白字符串了,注意这里不是Null值呀。