您的位置:首页 > 数据库 > MySQL

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

2016-06-25 00:33 573 查看
安装的过程很简单,就直接到官方下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 directory
find: /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 .viminfo
drwx------  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  |     | NULL
password_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: 1

mysql> 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 password
Enter password:   //这里输入上面设置的密码
New password:    //重新输入新密码
Confirm new password: //重新输入新密码


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

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



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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: