Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 420|回复: 0

解决windows下的mysql匿名登陆无法使用mysql数据库的问题

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-6-27 10:31:29 | 显示全部楼层 |阅读模式

    转载请注明出自博客园,附加上本文的链接http://www.cnblogs.com/bangbangjiang/p/3564321.html   谢谢~

     

    我在windows下安装了mysql,但是不用密码就能登进去,而root明明是有密码的,我用select user()命令查看当前登录用户是root。

    查看数据库,只能看到自带的两个数据库(information_schema和test),mysql这个数据库都看不到。如果运行use mysql,就会出现 Access denied for user ''@'localhost' to database 'mysql', 这说明这是匿名登录的,几乎什么权限都没有。即使用mysql -u root登录也是提示这个。

    网上搜了很多资料,大多数是教的怎么在linux下解决这个问题。

    我综合了大多数的方法,自以为找到了解决的办法,所以特意在博客园这里写下这篇文章:

     

    1.首先,网上的资料都提到了需要关闭mysqld这个服务来屏蔽权限检查,我查看了任务管理器,发现的确有一个叫mysqld.exe的程序在运行:

    直接关闭这个进程

    我查阅了帮助手册,”MySQL服务器也就是mysqld,是在MySQL安装中负责大部分工作的主程序。服务器随附了几个相关脚本,当你安装MySQL时它们可以执行设置操作,或者是帮助你启动和停止服务器的帮助程序。“ 我估计它相当于mysql的守护进程,不停止它就无法设置启动脚本。

     

    2.网上都提到了

    mysqld-nt --skip-grant-tables

    mysqld_safe --skip-grant-tables

    safe_mysqld --skip-grant-tables 等关闭权限检查的方法,但是我在CMD命令提示符下输入都提示:“mysqld_safe”不是内部或外部命令,也不是可运行的程序或批处理文件。

    于是我查看mysql安装目录下的bin文件夹里有哪些相关的文件:

    (1)mysqld.exe (2)mysqld_multi.pl

    我查看了帮助手册,“在Unix和NetWare中推荐使用mysqld_safe来启动mysqld服务器。mysqld_safe增加了一些安全特性,例如当出现错误时重启服务器并向错误日志文件写入运行时间信息。为了保持同旧版本MySQL的向后兼容性,MySQL二进制分发版仍然包括safe_mysqld作为mysqld_safe的符号链接。默认情况下,mysqld_safe尝试启动可执行mysqld-max(如果存在),否则启动mysqld。”  

    我估计mysqld_safe是mysqld.exe文件里的一个启动选项。所以我尝试了这样输入:

    先跳转到mysql的bin目录下,再输入mysqld --skip-grant-tables。这时候有可能一直没有反应的样子,不会生成新的一行输入。

    实际上它已经停止了权限检查,我们可以进行其他操作了。

     

    3.重新打开一个cmd命令提示符窗口,进入到mysql里面,然后输入use mysql,就会发现成功了!:

    看到没?上面最后一行提示的是Database changed!!

    如果你输入show tables就会看到这个数据库下有个表叫user,记录了登陆的账户名和密码。

    所以你可以这样修改root账户的密码:

    UPDATE user SET Password=PASSWORD('123') WHERE user='root';

     貌似还要加上一句:mysql>flush privileges;重新加载权限表。

    这时你使用MySql Command Line Client登陆的话,就会要求输入密码123了!你已经不是匿名登陆,所以可以进行各种操作了!!!

     

    更新

    后来我发现每次重启过电脑之后,都是匿名登陆。研究了一番之后,我明白了为什么会这样。因为我安装的时候在最后一步少勾选了一个配置选项:
    mysql server instance configuration wizard

    详细教程可参见,我觉得它说得蛮详细的:http://blog.163.com/tao198352__4232/blog/static/85020645201061810038491/

    如果出现start service失败的情况,可以参见:http://blog.163.com/capple_wang/blog/static/1221480420091245340696/

    http://www.3eyes.org/POST/mysql.error0.asp 等等,我都是通过他们才安装成功的。

    现在登录都是需要输入密码了~~~

     

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-1-22 23:41 , Processed in 0.103567 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表