phptsudy的mysql的使用没有办法使用的问题解决
后台-插件-广告管理-内容页头部广告(手机) |
因为学校的实验需要用到phpstudy来生成环境,但是我电脑本身之前下载过mysql了,所以,旧的MySQL和phpstudy当中的MySQL起冲突了,导致新下载的phpstudy无法启动
讲述一下我解决的过程(写的有些长,因为自己在这次解决错误的过程当中也学到了不少)
我旧的sql是mysql8.0版本的,phpstudy自带的mysql是5.7版本的。
总的来说应该是有两个冲突的,一个是服务的冲突,一个是端口名称的冲突。先安装的mysql已经将mysql这个服务给占用了,所以后边的mysql就不能使用了。如果服务名不冲突的化,改个端口应该就可以同时运行了
还有少部分人是因为两个mysql服务都是开机自启动的问题。这个本质是端口冲突,
有两种办法解决
一。把服务改为手动,一次只开启一个
二。修改其中的一个MySQL的端口号
想起来mysql8.0版本默认的服务名是mysql80,结果我给改成了mysql,所以就冲突了,真想打一顿当时写教程的人,怎么没说phpstudy这回事。
还有写phpstudy的人能不能把程序写的健壮一些,不是所有人都有解决问题的能力的啊(仅仅吐槽)
一.将原本的sql的服务给删除
这个删除只是将你的服务给删除,也就是说没有办法运行,电脑不会再给这个为这个mysql服务了,但是数据库的信息还是在的,所以说不用担心数据的丢失
数据在mysql的date目录之下,可以自己去查看,并不会消失
里面的每个文件夹,对应一个数据库。
sc delete 服务名一般的服务名就是MySQL,所以直接用MySQL就行,不会识别大小写差异
- sc delete mysql
如何找到和自己之前mysql配置相同的mysql服务名,建议最好还是去服务当中看一看,服务有两种打开方式,推荐下面的链接
Windows系统打开服务窗口(三种方式)_servicesmsc-CSDN博客
打开服务之后,鼠标右击,查看属性
会有可执行文件路径,记得对比一下和你之前的mysql安装的位置是不是一致的,记得把可执行文件的路径保存下来后面要用。还有记住你mysql的版本。
我保存一下
"E:\Software folder\web\MySQL Server 8.0\bin\mysqld" --defaults-file="E:\Software folder\web\MySQL Server 8.0\my.ini" mysql8.0
删除完之后就phpstudy就可以用了
有一点奇怪的是phpstudy并没有创建新的服务MySQL但是却可以正常启动
查看一下端口号的进程占用
netstat -ano | findstr 3307
结果发现运行的好好的,但是就是没有服务,奇怪。(不造为啥,能用就行)
这个时候你登陆之前的MySQL会显示这个报错
所以要第二步配置服务
补充:MySQL5_pn是phpnow当中的,不是phpstudy创建的
讲一下一个地方的差异
正常的应该是这样的
两个可执行文件最后指向的文件是不一样的
E:\SecurityTools\phpnow\MySQL-5.0.90\bin\mysqld-nt.exe
E:\Software folder\web\MySQL Server 8.0\bin\mysqld
一个是mysqld-nt.exe一个是mysqld,不同的原因(有可能是版本的差异造成的,前者版本太早了)
创建服务用:mysqld install 服务名启动服务用:net start 服务名
停止服务用:net stop 服务名
删除服务用:sc delete 服务名
启动和停止服务用net开头,和nt是不是很像(无端联想)
以下是MySQL-5.0.90\bin目录下的文件,并没有发现mysqld文件,再加上版本号过早,推测是mysqld-nt.exe最后改名成了mysqld.exe
查看8.0或者是5.7版本的,就会发现没有mysqld-nt.exe而有mysqld.exe文件
二.删除服务之后创建一个新的服务
使用管理员权限打开cmd命令窗口
然后跳转到你之前旧的MYSQL文件夹的bin目录下
然后查看mysql的版本,看看是不是你之前删除的那个MySQL服务的版本(因为我们执行的实际上值mysql\bin目录下的mysqld.exe文件,mysql版本不对,使用的mysqld.exe肯定也不一样)
执行创建服务的命令(先别执行,这个命令是要改的)
mysqld --install MySQLXY --defaults-file="C:\Program Files\MySQL\MySQL Server X.Y\my.ini"先解释一下这个命令的含义:(我本身再网上没有找到相应的说明所以只能自己猜了)
MySQLXY是服务的名称,改成你想要的名称就行,随便起,我改的是mysql8.0
"C:\Program Files\MySQL\MySQL Server X.Y\my.ini"是你mysql的my.ini的文件地址
还记得我们之前保存的路径吗?
"E:\Software folder\web\MySQL Server 8.0\bin\mysqld" --defaults-file="E:\Software folder\web\MySQL Server 8.0\my.ini" mysql8.0
将后面这段-defaults-file="E:\Software folder\web\MySQL Server 8.0\my.ini"和命令当中的进行替换就行
这是我改后的代码,改完后就可以执行了
mysqld --install mysql8.0 --defaults-file="E:\Software folder\web\MySQL Server 8.0\my.ini"执行出来的效果
可执行文件路径是
"E:\Software folder\web\MySQL Server 8.0\bin\mysqld" --defaults-file="E:\Software folder\web\MySQL Server 8.0\my.ini" mysql8.0
这样服务冲突就没有,只剩下端口冲突了,在phpstudy当中将端口号改变
然后启动刚才创建的服务,就可以在一台计算机上运行两台MySQL服务
如果服务没有启动成功,就看一下可执行文件的路径
和之前保存的对比一下是不是一样的,后面是我们配的,前面是mysqld系统服务自己加的
如果前后一致的话看看是不是my.ini当中的
datadir=E:/Software folder/web/MySQL Server 8.0\Data
和本地的路径不一致(突然想起来旧版的让自己配置服务的mysql了,都是自己之前配的啊)
补充:
为什么会有这个补充呢,我的就这样解决了,但我同学的照这个办法没有办法实现。
我在给他解决的时候他不敢删除服务,所以我换了种方法
就是给phpstudy当中的mysql创建一个服务,然后让他使用那个服务,不就不冲突了
可以在这里直接进入mysql系统自带的mysql当中
然后按照上述的方法进行mysql的配置,但不行,因为服务启动不起来,服务的可执行文件路径出了问题
"E:\Software folder\web\MySQL Server 8.0\bin\mysqld" --defaults-file="E:\Software folder\web\MySQL Server 8.0\my.ini" mysql8.0
这是正常的,会发现路径前面E:\Software folder\web\MySQL Server 8.0\是一致的
但他的不一致,他前面的和旧有的保持一致
思路一
可以使用这个命令来更给之前旧有的mysqld配置保留
mysqld --remove MySQL57
想法来源:Windows注册与删除mysql服务 - QiaoZhi - 博客园 (cnblogs.com)
但是我并没有执行,仅提供一种思路
思路二
还有另一种思路,找到注册表会发现这里的信息和服务当中的信息是一致的,更改这里的信息相当于更改注册表。
直接修改这里的信息
想法来源:教你彻底卸载MySQL 并重装(保姆级教程 )_mysql怎么卸载干净重装-CSDN博客
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl001\Services\MYSQL
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl002\Services\MYSQL
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MYSQL
这是可能涉及的注册表,不懂的新手,建议慎重更改。
后话(一点唠叨):最后熬到两点也没有给他解决,然后就睡觉去了。不得不说,学计算机真的让人头秃,一点细小的差别,就可能导致全盘的错误。无法执行,找错误,是最花时间的,还有就是,我的windows基础相当的不扎实,对注册表和服务理解的都不咋样,操作系统是很重要的一门学科,得好好学。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |