phpAdmin和本地mysql数据不同问题的可能成因和可能解决方法

phpAdmin和本地mysql数据不同问题的可能成因和可能解决方法

环境

操作系统:OS X
技术栈:XAMPP

问题描述

在自己搭建php服务的时候发现XAMPP技术栈下的phpadmin dashboard中数据和本地terminal启动mysql中的数据不同。show databases给出了不同的结果。

通过ps aux | grep mysql 在 terminall查看后台进程发现有两个不同的mysql进程,但是一个是在XAMPP目录下,一个不是。

问题诊断

由于之前工作原因,电脑上以前装的mysql忘记删了,所以当前电脑上总共有三个mysql,两个不是通过homebrew装的,一个是通过hombrew装的。同时那两个不是通过brew安装的mysql中甚至带my.cfg这个配置文件。通过brew安装的这个不带。我完全记不清那两个老版的mysql是从哪来的了。

检查/usr/local/etc/ 目录下存在my.cfg和my.cfg.default。估计是之前调试什么东西的时候自己还备份了my.cfg。

检查/tmp/ 目录下有个mysq.sock。

打开XAMPP,查看mysql service的config文件。发现它的配置文件中,关于mysql.sock的路径并不是/tmp/my.sock。

mysql本地连接是通过sock完成的所以不同的sock会连到不同的mysql service上,导致phpAdmin和本地mysql(通过控制台启动)看到的数据会不一样。本地mysql对应的mysql.sock应该是默认/tmp/mysq.sock,而XAMPP中phpAdmin访问到的应该是通过XAMPP manager中my.cfg配置文件中对应路径下的mysql.sock。

所以当XAMPP启动时会产生一个mysql的进程,而使用terminal启动mysql时又会产生另一个mysql进程,而且两个进程的用户不同,目录不同。

解决方法

首先把Mysql删干净。可以参考土豆面包的这一篇文章:

https://blog.csdn.net/qq_40177015/article/details/111599464?ops_request_misc=&request_id=&biz_id=102&utm_term=Mac%20彻底删除mysql&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-111599464.nonecase&spm=1018.2226.3001.4187

其次通过brew重装一个mysql.

由于我的XAMPP连接mysql默认使用root,重装完成之后由于只有一个mysql在本地,此时/tmp/下的mysql.sock已经被我删掉了,通过控制台 mysql -u root 不设置密码直接能连到和phpadmin同样的mysql service上。然而由于我自己也没有设置由于重装新生成的my.cfg上,此时在不清楚原因的情况下,问题就这样解决了。

而我的预期是重装之后再修改/usr/local/etc/ 目录下的my.cfg,让这个my.cfg和XAMPP的my.cfg的mysql.sock路径指向同一个mysql.sock。但没有做这一步问题也解决了。

疑点

1.先前通过控制台启动的mysql,中root的是我之前时候设置的密码,phpadmin使用root登陆没有密码。所以我猜这两个root可能是由于环境变量的问题连到不同的mysql上了,我使用terminal, eclipse, idea访问到的mysql service和phpadmin访问到的不是同一个。

2.由于mysql不同用用户登陆进去看到的东西是不一样的,也可能是这个原因。同样是root登陆一个要密码一个不要密码,这里的原因没搞清楚。

3.由于brew安装的软件都在/usr/local/Cellar/目录下,我检查了这个目录下的mysql目录。在/usr/local/Cellar/mysql/8.0.31/bin/ 这个目录下有一个mysql.config文件,目前不清楚mysql.config这个文件有什么功能,它包含一个指向mysq.sock的语句—“socket=‘/tmp/mysql.sock’”。这个/tmp/mysql.sock应该是默认的,下次试试修改这个参数看看会有什么效果。

4./usr/local/opt/这个目录下也有mysql和mysql@8这两个目录,这两个目录下对应位置分别有对应的mysql.config。看到这个我觉得非常蛋疼,因为不知道这个/…/opt/目录下的文件和/…/Cellar/下的文件有什么关系。也不知道mysql.config和my.cfg有什么关系。

可能结论

1.最可能的解释是由于电脑上同时存在之前手装的两个mysql和一个brew装的mysql,混乱的环境变量设置导致不同的程序访问了不同的mysql service。这种情况我认为删干净所有的mysql,使用brew安装唯一指定mysql是一个解决办法。

2.由于知识还是比较有限,对mysql和操作系统的理解也比较浅,不清楚环境变量的混乱具体是怎么混乱,mysql不同的用户登陆为什么会看到不同的数据库内容,还有/…/Cellar/下和/…/opt/下的文件有什么关系以及mysql.config和my.cfg的关系。

后续有时间会把第二点弄清楚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值