事情的起由说来也一般,由于公司测试系统数据库访问设置了内网IP白名单限制,故鄙人在personal computer的数据库连接请求是被拒绝的。理论上来讲,这也不算个神马事情,由于只是想用数据库相关数据进行代码测试而已,鄙人就打算直接将测试系统数据库dump一份到本机。
简单粗暴:brew install mysql (详情可参见:http://blog.neten.de/posts/2014/01/27/install-mysql-using-homebrew/),整个安装过程似乎很顺利,安装后顺其自然:首先 mysql --version(提示"command not found",显然去设置下安装路径就阔以了:“sudo ln -fs /usr/local/bin/mysql mysql”);然后运行mysql,mysql.server start|restart|status|stop ,报错“ERROR: mysql server PID file could not be found!”,虽有点莫名其妙,⚛️Google告知似乎都是“用户权限(_mysql)和.err日志文件等问题”,半日光景事情倒也轻松解决,然后。。。我就以为万事大吉,屁颠屁颠的溜之大吉了。。。。。。
然额,真正恐怖的事情即将发生。
mysql成功安装后的第二天,我打算正式将测试数据库数据dump一份到本机。按计划是分分钟的事情(毕竟安装成功后也是进行过测试的):首先mysql.server start-——>mysql -u root -p,提示输入密码,不假思索敲了回车,然后。。。密码不正确。。。啊嘞,我没改过初始密码呀,mysql默认初始密码一直是空呀,我断片了。。。。。??
官网查看doc后发现,据说mysql为了安全性从5.7版本开始,初始密码就不再是空,而是一串复杂的随机字符串,包含中英文字母,特殊字符、数字。。。,总之不是一般人猜的出来的(http://xiaorui.cc/2016/01/20/mac%E4%B8%8B%E5%AE%89%E8%A3%85mysql5-7%E9%81%87%E5%88%B0%E9%BB%98%E8%AE%A4%E5%AF%86%E7%A0%81%E7%9A%84%E5%A4%A7%E5%9D%91/)。妈妈嘞,就算当时安装过程中有提示随机密码信息,偶也不知道了呀。。。肿么破?centos下密码应该是放在~/.mysql_secret中,但Mac呢,经查询根本没有整个文件哇??!!
冷静下来,话说这种事情,我绝对不是第一个倒霉蛋,果然,小伙伴很多呀。。。。。。😦据说以安全模式登录可以绕过root密码验证:http://www.jianshu.com/p/12b745a561b1,本宝宝如获至宝啊,立马走起。。。然而。mysql_safe模式我怎么就是进不去呢。。。ps -ef | grep mysql进程怎么就是杀不完了呢(杀完之后查看有随机生成一个)?崩溃啊,烦躁啊,绝望啊!!(最后发现原因:mysql默认设置为开机启动了,即开启了mysql的守护进程,而我初始测试是以mysql_safe方式启动的,然后守护进程在发现子进程被杀死时,会自动重新创建子进程,这都是我第二次重装后的以后的以后发现的了,欲哭无泪啊。。。。。。🌧️)
在挣扎N久不能以mysqld_safe模式--skip-grant-tables,我真正绝望了。。。。。。平心静气,既然是密码不对,那我卸载了重现安装时记录下随机密码不就行了~~~鉴于上次的教训,这次很乖的去mysql.com官网上看了documents,然后:1. 安心卸载mysql(https://coderwall.com/p/os6woq/uninstall-all-those-broken-versions-of-mysql-and-re-install-it-with-brew-on-mac-mavericks);2.下载mysql安装包dumg(这次不用brew了,可视化较差);3.然后进入傻瓜安装模式。。。天啊,我终于在安装过程中看到了神秘的随机密码。。。喜极而泣哇!!😫😫😫😫
安装成功,心理舒了一口气,紧接着mysql.server start,事实证明。。。我高兴的太早了。。。。。。这回更TM悲剧,mysql都start不起来,根据报错信息“ERROR...Manager of pid-file quit without updating file.”报错发生的原因问题可能不太一样,解决方案:1.查看报错日志 /usr/local/mysql/data/*.err文件,报错日志是我们解决问题的方向灯哇~~;2. 可能原因:残余数据(如果是第二次安装mysql,/usr/local/mysql/data目录下的残余数据mysql-bin.index)会影响mysql.server的启动,删除之),数据目录的权限(如果不是mysql或用户所有者,chown -R mysql:mysql /mysql/data修改之),mysql进程依然跑着(ps -ef | grep mysql,如果出现的结果不止一行,kill之)。。。。。。
总之原因也就那么几种情况(鄙人比较渣,扑腾一下午才解决),你们要相信谷姐的强大哦。😯
几经波折后,mysql.server终于颤颤巍巍的启动了,然后迫不及待的输入生成的随机密码,哇咔咔~~终于登录了,泪流满面哇,喜大普奔哇。。。那么,第一件事定是要修改那该死的随机密码了: use mysql 。。。。。。然呃。。。“Error 1820 : You must reset your password using ALTER USER statement before executing this statement”,不要方,都已经扑腾到这里了,我们还怕什么:完成以下三步退出重新登录,即可完美解决:
step 1: SET PASSWORD = PASSWORD('your new password');
step 2: ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
step 3: flush privileges;
跌跌撞撞到这里,mysql总算是成功安装投入使用了~~~那么,愉快的dump数据去吧。。。。。哦吼吼~~~