mac下安装Mysql5.7.13遇到默认密码的大坑

来源:互联网 发布:su素材知乎 编辑:程序博客网 时间:2024/06/07 03:44

安装的过程很简单,就直接到官方下mysql dmg,一路下一步就可以装完..

但是带来的问题是,默认密码不为空… mysql -uroot -p 登陆不进去… 直接使用mysqladmin改密码也提示错误.

一般在centos下安装Mysql 5.7版本后,密码应该是放在 ~/.mysql_secret文件里,但是Mac呢 ?各翻遍了所有目录都没找到… 一顿狂Google之后,发现不少老外也在纠结这个问题… 这算不算个坑…

[root@devops ~ ]$ sudo find / -name ".mysql_secret"find: /dev/fd/3: Not a directoryfind: /dev/fd/4: Not a directory[root@devops ~ ]$ ll /private/var/root/.total 24-rw-------   1 root  wheel  2520 11 10 23:31 .sh_history-rw-------   1 root  wheel  3402 11 10 23:31 .viminfodrwx------  13 root  wheel   442  9 10 22:23 Library-rw-r--r--   1 root  wheel     5  1 16  2015 .CFUserTextEncoding-r--r--r--   1 root  wheel    10  9 10  2014 .forward

那么密码跑哪里去了? 不纠结了,直接把默认密码干掉,再重新配置一个新密码.

首先我们通过 –skip-grant-tables的方式启动mysqld_safe进程 ,这个模式是可以绕过mysql授权.

sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables

mysql5.7颠覆的事情太多了,已经mysql.user会有个password字段,现在替换成authentication_string了.

authentication_string  | text               | YES  |     | NULL password_expired       | enum('N','Y')      | NO   |     | N password_last_changed  | timestamp          | YES  |     | NULLpassword_lifetime      | smallint(5)        | YES  |     | NULL account_locked         | enum('N','Y')      | NO   |     | N 

然后正式改密码,注意姿势 !

mysql> update mysql.user set authentication_string=PASSWORD('123123') where user='root';Query OK, 1 row affected, 1 warning (0.04 sec)Rows matched: 1  Changed: 1  Warnings: 1mysql> flush privileges;Query OK, 0 rows affected (0.02 sec)mysql>

这时候Myqsl密码已经修改完了,我们把上面的mysqld进程干掉,通过正常途径起Mysqld服务

mysql -uroot -p

mysql>mysql> show databases;ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.mysql>mysql> set password for root@localhost=password('123123');Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || sys                |+--------------------+4 rows in set (0.01 sec)mysql>

当你通过skip授权修改的密码,需要再次修改下密码. 也不知道为什么有这个要求.

Your password has expired. To log in you must change it using a client that supports expired passwords.

提示密码过期,那就再次修改

[root@localhost bin]# ./mysqladmin -uroot -p passwordEnter password:   //这里输入上面设置的密码New password:    //重新输入新密码Confirm new password: //重新输入新密码

问题解决,这样Mysql的密码就改完了.

嵌入式企鹅圈原创团队由阿里、魅族、nvidia、龙芯、炬力、拓尔思等资深工程师组成。百分百原创,每周两篇,分享嵌入式、Linux、物联网、GPU、Android、自动驾驶等技术。欢迎扫码关注微信公众号:嵌入式企鹅圈,实时推送原创文章!

这里写图片描述

技术交流学习或者有任何问题欢迎加群:154514123

这里写图片描述

1 1
原创粉丝点击