环境:window11 mysql-8.0.37
现象:root用户的host设置为%后权限全无导致连接数据库报错,显示权限不足;
解决步骤:
-
开2个CMD窗口:该窗口使用
mysqld --console --skip-grant-tables --shared-memory
启动服务器 - 第二个窗口:
mysql -uroot -p
回车登录即可,不需要输入密码 - 输入use mysql;show tables;看到最底下的user;
- 输入select * from user\G,出现每个用户的权限
- 输入select host,user,authentication_string from user;可以更清楚的看到用户信息
- 我想保留%,于是创建了一个新用户,语法为:create user '用户名'@'登陆主机/ip' identified by '密码';出现了报错后,输入flush priviledges;再输入创建命令;
- 再次输入 select host,user,authentication_string from user;发现创建成功;
- 给这个用户赋予所有权限grant all privileges on *.* to 'test'@'localhost';
- 输入use mysql;然后输入select * from use\G查看是否赋予权限
- 成功之后关闭两个窗口,启动mysql服务,并尝试使用Navicat输入用户名和密码新建连接,验证成功!
- 如果想要删除用户:记得加上分号;
- 按照类似的方式可以直接给host为%的开放所有权限;这样root也可以进入;