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