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

标签: mysqlcentos密码mac谷歌
5626人阅读 评论(1) 收藏 举报
分类:

安装的过程很简单,就直接到官方下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

这里写图片描述

1
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    编程技术学习交流群 :154514123
    微信
    个人资料
    • 访问:563033次
    • 积分:8058
    • 等级:
    • 排名:第2897名
    • 原创:309篇
    • 转载:34篇
    • 译文:2篇
    • 评论:107条
    最新评论