在mac上面,安装mysql一不小心忘记保存自动生成的初始密码就悲剧,各种百度。以前,没写过博客,或许是觉得自己太菜鸟了吧,每次遇到问题总是百度别人的博客,有点不好意思了,所以把自己这次遇到的问题,记录下来,希望对后面遇到这类问题的同学有帮助。
傻瓜式的安装,总是让你不太注意安装的信息上说了什么,就像没有人会读安装软件的协议一样,会把非常重要的信息丢掉了。比如,安转mysql时的初始密码;
安装完mysql之后,会有个窗口提示你 root 用户访问localhost时的初始密码:我这个就是 !u*_o!J3(t(F 谁要把这个密码能记住,那我太佩服了。截图是 在mac 右侧通知栏提示的。关了窗口也没关系,查看通知也行。但是通知信息也删了,就可能麻烦了,你要么去查看系统的log,要么接着百度网上的各种方法,反正不懂原理,就只能碰了,真是闹心。
好了说说,我遇到的情况吧。我一共装过两次在mac平台,第一次,整的真想摔了mac,第二次比较顺利。可能是有了第一次的失败。
第一次是吧安装时的初始密码忘了,又对mac ox系统不懂,也不懂linux,都不知道在哪里看这些东西。所以只能一次又一次的百度,人家提示的那些命令。当然你若是保存这个初始密码会比较好弄。
打开终端,当你敲mysql 系统提示 -bash: mysql: command not found 那说明系统shell不认识这个命令,你需要,在 ~/.bash_profile 文件里配置这个命令 这个隐藏文件是当你启动终端这个程序的时候,这个程序就回自动去读取的文件。就像下面这样。
你不能完全抄我的这个路径,你需要自己去路径下看下自己mac上具体的路径,但是大提上都一样的,你的mac不一定装的是 5.7.17-macos10.12-x86_64 的mysql 可能这里需要改动下,其实许多的命令都可以在这里配置,如 python / svn 等等。
当你参照百度的博客的提示 敲mysql -u root -p 是系统提示:
mysql 拒绝了你的访问,而且 using password : 一会儿是YES ,一会儿是NO,怎么回事,有点懵逼了,系统在发什么神经。其实当你在输入密码的时候,输入123456,输入root都是不对的,有人说win系统默认是123456,我没弄过就不说了,你输本机的登录密码还是不对。当你没有注意上面的那个提示,A temporary password is generated for root@localhost:!u*_o!J3(t(F 为root@localhost生成的一个临时的密码:!u*_o!J3(t(F ,你要输这个就对了。就进去了,like that。
迫不及待输入下 show databases; 想看下有什么数据库,系统提示你,先把临时的密码改掉。like that。
alter 这个命令 我还不不熟悉,第一次安装数据库,就是想学下数据可操作的语句,上来就整着么难的,我擦,百度吧。
百度说 用 set password=123456; 就能把root的密码改成123456,我试了一下
系统说,他不认识。我擦,
这里的密码是要加上单引号的,可能双引号也行,可能password这个字断在设计的时候不是个int类型的也不是double而是varchar类型,字符串,想一下也对啊。
改成 SET PASSWROD = '123456' 就好了
现在来 show databases; 就能显示出来了。like this。
最后,还要执行 flush privileges;这个命令的意思是,让上面的修改生效。真是麻烦,尤其是对第一次接触和使用数据库的人来说。like this。
上面所述的是你 记住了安装mysql时的初始密码,着么干就好了,那要忘了呢?有两种方式,1. 卸载mysql重新安装,下次安装时注意那个生成的初始密码,由于mysql不是应用层软件,卸载起来也没那么容易,详细请百度。2.这种方式是先stop mysql 再进入到安全模式,然后 重新打开一个终端,进入到mysql,然后,执行mysql的命令修改 root的密码。
详细步骤可以参考https://segmentfault.com/a/1190000002955092,也可以看我下面写的。
第一步: cd /usr/local/mysql-5.7.17-macos10.12-x86_64/bin 目录下,/mysql-5.7.17-macos10.12-x86_64这个要看你自己mac上面具体叫什么名字了,最好自己cd进到local看下。
第二步:sudo ./mysqld_safe --skip-grant-tables & 后面的&最好加上。
第三步:重新打开个终端窗口,敲mysql 就进入到了安全模式下的mysql环境了,可以修改 root的密码了。
输入这个 update mysql.user set password='123456' where user='root';
第四步:flush privileges; 重新设置下权限,就ok了
如果这样你就通过了,那恭喜你,非常幸运,因为,我自己敲第三步命令时,系统提示我,不认识password这个字段,悲剧了。like this,或许我第一次,忘记初始密码时,这么搞,就OK了,那次搞了接近3个月的时间,也不是天天弄,反正过个一两个星期,就弄一次。坚持住没摔mac。只是无数次我槽,从心中飘过。
这怎么办?卧槽,看下user这个表都有什么字段呗,然后修改下。like that。
着有点晕,show create table user; 看下那个和密码相关的字段在创建的时候时varchar类型的,毕竟密码在保存时一般都是字符串的。
没有一个是字符串的,看来这个表中没有密码了, 这个问题我也搞不定了,若果您也遇到这种情况,我建议您重新安装下mysql软件,记住初始密码,按照我上面说的做吧。
以后随着理论知识的的深入,在给大家,解释怎么解决,这次就先写这么多了。希望大家多多批评指导。谢谢