1.找到mysql配置文件
系统 | 目录 |
---|---|
Windows | C:\ProgramData\MySQL\MySQL Server X.X\my.ini 或者 C:\Program Files\MySQL\MySQL Server X.X\my.ini |
macOS(Homebrew 安装) | /usr/local/etc/my.cnf |
macOS(官方安装) | /etc/my.cnf 或者 /etc/mysql/my.cnf |
Linux(Debian/Ubuntu) | /etc/mysql/my.cnf |
Linux(CentOS/RHEL) | /etc/my.cnf 或者 /etc/mysql/my.cnf |
2.开启skip-grant-tables配置
先通过无密码方式登入 配置文件中[mysqld]
下一行加上skip-grant-tables
,表示无密码登入
vi /etc/mysql/my.cnf
编辑完成后,重启mysql
systemctl restart mysqld
3.设置空密码
重启完成后,登录mysql
mysql -u root -p
输入完成后会提示让我们输入密码,这里直接回车,可以看到成功连接上来了
接下来这一步很关键,因为mysql自从5.7以后就更改了user的表结构,并更改了密码的加密方式,所以我们只能先执行sql设置密码为空,然后再用命令设置密码
update user set authentication_string = '',host = '%' where user = 'root';
执行完成之后刷新权限
FLUSH PRIVILEGES;
退出MySQL命令行模式
quit
3.关闭skip-grant-tables配置,重启mysql
此时,我们再编辑下配置文件,将刚才的配置注释
保存并退出
:wq
重启mysql
systemctl start mysqld
4.设置密码,并再次重启
完成之后,再次登录mysql
mysql -u root -p
同样,这里因为设置了密码为空,所以可以直接回车登录
登陆上去以后,重新设置密码,密码根据自己需求更改
ALTER USER 'root'@'%' IDENTIFIED BY '密码';
完成之后,刷新权限
FLUSH PRIVILEGES;
退出MySQL命令行模式
quit
重启mysql服务
systemctl start mysqld
5.登录验证
登录并输入密码,回车
mysql -u root -p
验证登录成功~