Mac重置mysqlroot密码及Navicat登陆

背景

以前装的mysql数据库忘记了root密码,查了下重置密码方法,记录一下。

重置方法

  • 关闭mysql进程

    可以使用命令来关闭:

    1
    2
    3
    $ sudo /usr/local/mysql/support-files/mysql.server stop
    Shutting down MySQL
    .. SUCCESS!

    或者在 系统偏好设置 - MySQL 中点击 “Stop MySQL Server”。

  • 进度mysql安全模式

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

    这里会提示输入密码,就是你mac的密码就好了。

  • 另开一个进程,直接使用root用户登录

    1
    2
    3
    4
    5
    $ sudo /usr/local/mysql/bin/mysql -u root
    Password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 7
    Server version: 8.0.13 MySQL Community Server - GPL
  • 修改root密码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    mysql> use mysql;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

    Database changed
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)

    mysql> alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'XXXX';
    Query OK, 0 rows affected (0.16 sec)

    mysql> quit;
    Bye
  • 关闭mysql进程

    这里建议还是用命令来关,通过 系统偏好设置 里面关,可能关闭失败。命令如下:

    1
    2
    3
    $ sudo /usr/local/mysql/support-files/mysql.server stop
    Shutting down MySQL
    .. SUCCESS!
  • 再次启动mysql即可

    1
    2
    3
    4
    $ sudo /usr/local/mysql/support-files/mysql.server restart
    ERROR! MySQL server PID file could not be found!
    Starting MySQL
    . SUCCESS!

注意

  • Mac sudo密码

网上有种方式是要启用mac的root用户,先su之后在操作。实践了一下,直接使用sudo前缀,用自己的mac用户密码就可以了。

  • mysql加密方式
    在重置密码的时候,如果使用的是:

    1
    alter user 'root'@'localhost' IDENTIFIED BY 'XXXX';

    也是可以登录成功的,但是这样会使用默认加密方式,使用Navicat登录时会有个“caching_sha2_password”的错误。

    image-20191209090952867

    需要将加密方式修改为普通方式(mysql_native_password):

    1
    alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'XXXX';