一、重新设置密码
1、 登录 MySQL
- 在任务管理器中结束 mysqld.exe 进程,确保 MySQL 服务端结束运行。
- 进入 MySQL 安装文件的 bin 目录
C:\Program Files\MySQL\MySQL Server 5.7\bin
,在地址栏输入cmd
,并回车,以在 cmd 中定位到 MySQL 安装文件的 bin 目录(如果配置了对应的环境变量,可以直接输入命令,不用定位到此目录位置)。 - 执行命令
mysqld --skip-grant-tables
。mysqld --skip-grant-tables
命令允许所有用户以匿名的方式,无需做密码验证直接登录 MySQL 服务器,并且拥有所有的操作权限。 - 重复第 2 步,打开一个新的 cmd 窗口,直接执行
mysql
命令连接 MySQL 数据库。 - 在 cmd 窗口中执行命令
use mysql;
选择 mysql 数据库。
2、 修改 root 账户密码
- 执行命令
select user,host,password from user;
查看账户信息。 - 执行命令
update user set password=password('123') where user='root' and host='localhost';
修改指定账户登录密码。 - 执行命令
flush privileges;
刷新。
3、解决 MySQL 5.7 无法登录的问题
-
问题描述
我使用 MySQL 5.7.25 版本,在执行命令mysqld --skip-grant-tables
后,使用mysql
命令无法登录,错误提示如下。mysqld: Can’t change dir to ‘C:\Program Files\MySQL\MySQL Server 5.7\data’ (Errcode: 2 - No such file or directory)
-
解决方法
- 服务窗口中找到 MySQL 服务,并将其停止。也可以执行命令
net stop MySQL57
将其停止。 - 在服务窗口中找到 MySQL 服务,并通过【右击】-【属性】,获取其路径
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" MySQL57
。 - 执行命令
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" --skip-grant-tables
启动 MySQL。注意:将拷贝的 MySQL 服务路径去掉最后的服务名称 MySQL57;执行该命令后,cmd 不会有任何响应,MySQL 将在后台工作。 - 打开新的 cmd,执行命令
mysql -u root mysql
登录。
- 服务窗口中找到 MySQL 服务,并将其停止。也可以执行命令
二、设置允许远程访问
1、测试远程登录
在 cmd 中执行命令 mysql -u root -p -h ip地址
测试是否能登录。
2、查看所有账户
本地登录后,切换到 mysql 数据库,执行命令 select user,host from user;
查看所有账户信息。
3、授权 root 账户可以远程登录
-
方法
执行命令grant all privileges on *.* to 'root'@'%' identified by '123' with grant option;
-
说明
*.*
代表所有资源所有权限。'root'@%
root
代表账户名。%
代表所有的访问地址。也可以使用一个唯一的地址,只有该地址能够访问。也可以是某个网段的地址,使用地址与 % 结合的方式,如47.99.122.%
。
identified by '123'
123
表示访问密码。with grant option
表示允许授权。
4、刷新权限
执行命令 flush privileges
。
5、查看所有账户
执行命令 select user,host from user;
后发现 root 账户的 host 多了一个 %,表示所有地址可以访问。