​ 维护的数据库多了,总会遇到不清楚管理员密码的时候,这个时候需要临时绕过登陆修改密码或额外创建访问账户,收集了网上的一些资料可以方便操作。

以下第一步和第二步是两种跳过方式,任选其一。

1、修改my.ini完成绕过登陆

​ 在my.ini的[mysqld]节点内添加,修改完成后,重启mysql服务即可生效

[mysqld]
skip-grant-tables

2、使用启动服务参数绕过身份检测。(需要先停止mysql服务,以下边的命令进行启动)

mysqld --console --skip-grant-tables --shared-memory

3、然后保存文件,重启mysql服务,就可以使用;如果默认端口号变更,使用 -P 端口号 进行登陆

mysql -uroot
mysql -uroot -P 13306

4、登陆完成后,这个时候我们修改密码或创建新的账户时会提示权限不足,需要先刷新操作权限

flush privileges;

5、然后进行密码修改,例如将用户 root 的密码修改为 newpassword,mysql8以上使用第二行命令进行操作。

update mysql.user set password=password('newpassword') where user='root';
update mysql.user set authentication_string=password('newpassword') where user='root';

修改完成后需要再次刷新操作权限,重复第4步骤

6、添加新的账户,将 库名 替换为要授权访问的库名称,.* 代表允许访问该库名下所有的表,’%’表示允许任意网络进行访问,如果只允许本机访问,可设置为’localhost’,grant select代表只允许查询,不允许修改。

grant select on 库名.* to newuser@'%' identified by 'password';