本文最后更新于:1 个月前

主机上找到配置文件

BoEzt0.png

  • Windows:my.ini

    选择默认的安装路径,则配置文件在:C:\ProgramData\MySQL\MySQL Server 5.7/my.ini

可能找不到ProgramData文件夹,这是因为一般是被隐藏了,可以直接复制上边路径到资源管理器,再访问即可。

  • Linux:my.cnf

    选择默认的安装路径,则配置文件在:/etc/my.cnf

其他找到my.cnf的方法:

  1. 首先找到mysqld的路径:

    which mysqld

    出来的路径就是mysqld 的路径。

  2. 敲命令:

    /usr/local/mysql/bin/mysqld --verbose --help |grep -A 1 'Default options'

    在这里就可以看到my.cnf的路径。

跳过登录时的权限检验

  1. 修改配置文件,在[mysqld]下一行加入:
[mysqld]
skip-grant-tables
  1. 重启 MySQL 服务:
  • Windows:

    • 推荐:服务 => MySQl => 重启此服务
      • Bou2X8.png
    • 依次执行net stop mysqlnet start mysql
      • BoKABD.png
  • Linux:

    • 启动:
      • service mysql start
    • 停止:
      • 使用server方式:service mysqld stop
      • 使用mysqladmin方式:mysqladmin shutdown
    • 重启:
      • service mysqld restart
      • service mysql restart(5.5.7版本命令)

重新登录MySQL

  1. 重启后,用 mysql -uroot -p 登录:
  • 可以不需要密码就可以登陆,因为跳过了登陆时的权限检验
mysql -uroot -p

BoK3DS.png

设置新的密码

  1. 选择 mysql 数据库:
use mysql
  1. 修改密码:
update user set authentication_string = password ('new-password') where user = 'root';

这里要更改的是 authentication_string, 而不是 ``password` 字段。否则就像下面的报错:

mysql> update user  set Password=password('new-password') where user='root';

ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
  1. 删除配置文件中在[mysqld]下一行加入的:
[mysqld]
skip-grant-tables
  1. 重启 MySQL 服务

验证新密码登录

  1. 使用:
  • 此时,需要权限检验

  • 务必删除配置文件中的skip-grant-tables,为了数据库的安全。

mysql -uroot -p

总结

以上所有的命令行过程,如下图:

BoM3xx.png


 目录