mysql8.0版本root用户的host设置为%后权限全无导致无法登录

环境:window11 mysql-8.0.37
现象:root用户的host设置为%后权限全无导致连接数据库报错,显示权限不足;
解决步骤:
  1. 开2个CMD窗口:该窗口使用mysqld --console --skip-grant-tables --shared-memory启动服务器
  2. 第二个窗口:mysql -uroot -p回车登录即可,不需要输入密码
  3. 输入use mysql;show tables;看到最底下的user;
  4. 输入select  * from user\G,出现每个用户的权限
  5. 输入select host,user,authentication_string from user;可以更清楚的看到用户信息
  6. 我想保留%,于是创建了一个新用户,语法为:create user '用户名'@'登陆主机/ip' identified by '密码';出现了报错后,输入flush priviledges;再输入创建命令;
  7. 再次输入 select host,user,authentication_string from user;发现创建成功;
  8. 给这个用户赋予所有权限grant all privileges on *.* to 'test'@'localhost'; 
  9. 输入use mysql;然后输入select * from use\G查看是否赋予权限
  10. 成功之后关闭两个窗口,启动mysql服务,并尝试使用Navicat输入用户名和密码新建连接,验证成功!
  11. 如果想要删除用户:记得加上分号;
  12. 按照类似的方式可以直接给host为%的开放所有权限;这样root也可以进入;
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 8.0中,你可以通过创建新用户并为其授予相应的权限来管理用户权限。首先,你需要编辑MySQL的配置文件my.cnf,并在[mysqld]部分添加以下代码:default_authentication_plugin=mysql_native_password。然后,重启MySQL服务以使更改生效。 在MySQL 8.0之前的版本中,你可以使用以下命令来创建远程访问的新用户并为其授予权限: 1. 连接到MySQL数据库:use mysql; 2. 使用grant语句为用户授权: - grant all privileges on *.* to '新用户名'@'%' identified by '密码' with grant option;(允许所有IP访问) - grant all privileges on *.* to '新用户名'@'指定ip' identified by '密码' with grant option;(仅允许指定IP访问) 例如,以前版本的创建用户授权的语句为:grant all privileges on *.* to 'root'@'%' identified by "123456" with grant option; 最后,使用flush privileges命令刷新权限。 在MySQL 8.0中,创建用户和授权的操作需要分开进行: 1. 创建用户角色:CREATE USER 'root'@'%';(创建角色) 2. 设置用户密码:ALTER USER 'root'@'%' IDENTIFIED BY '123456';(设置密码) 3. 授予用户权限:grant all privileges on *.* to "root"@"%";(给角色授权) 最后,使用flush privileges命令刷新权限。 如果你需要修改用户的主机信息,你可以使用以下命令: update mysql.user set host='具体要指定的主机ip' where user='root';(修改主机) 你可以使用以下命令查看用户信息: select user,host,authentication_string from user;(查看用户信息) 希望对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值