• Access denied for user ''@'localhost' to database 'mysql'问题



    Access denied for user ''@'localhost' to database 'mysql'问题

    MySQL : Access denied for user ''@'localhost' to database 'mysql'问题看点。
    原创starmyao 最后发布于2018-08-24 21:10:23 阅读数 7880 收藏
    展开

     问题描述:
        MySQL命令行,登陆root账户的时候,密码为不为空,但是执行‘use mysql;’命令的时候,总是提示:‘Access denied for user ”@’localhost’ to database ‘mysql’ ’。
       仔细看错误提示Access denied for user ''@’localhost’ to database ‘mysql’,意思就是:拒绝user为 ” 的账户登陆,就用空密码登录为匿名用户,没有权限,自己的密码又忘记了。没办法就只有该自己的密码。

    问题一解决root密码的办法

      MySQL安装目录下找到 my.ini文件,编辑, 找到[mysqlId],在之后添skip-grant-tables(跳过授权表),此时重启 MySQL服务,打开命令行,就可以使用空密码登陆了。(记得重启服务)

    1.   mysql -u root -p
    2.   //输入密码,直接使用回车,用空密码登陆
    3.    mysql>use mysql;
    4.   mysql>update user set password=PASSWORD('这里输入你的新密码要用单引号') where user='root';
    5.  mysql> flush privileges;

    2.此时,重新启动MySQL服务,然后重新打开控制台。 
    3.记得把 my.ini 文件中最后添加的那行配置skip-grant-tables给删除了,删除后,要重启服务。使用新密码登陆。

    问题二解决‘localhost’的办法
     在以上的方法实施后,还是拒绝user为 ” 的账户登陆操作。这是什么原因了?在网上搜n久也没有看出所以然。
    又前面的操作,跳过授权表,空密码进入mysql,查看user表。
     
     user | password                                  | host                                       |
    +------+-------------------------------------------------+-----------------------------+
    | root | *8**************************************D | %                                |
    | root | *8**************************************D | localhost.localdomain |
    | root | *8**************************************D | 127.0.0.1                     |
    | root | *8**************************************D | ::1                                |
    |      |                                                                | localhost                     |
    |      |                                                                | localhost.localdomain |
    | DCH  | *8**************************************D | %                               |
    | DCH  | *8**************************************D | localhost                    |
     
     发现我的root用户原来没有localhost权限?在mysql -uroot -p -h127.0.0.1登录ok!
     那就是没有给“localhost”授权。  
     我记得授权时使用的'%',为什么没有“localhost”呢?这里用%则代表了所有的host都能远程访问该mysql。
     但是查询mysql官方文档说明后,‘%’并不包括localhost!为什么这样呢,害人不浅,快快对localhost和%都进行了赋权。
     grant all privileges on *.* to root@"localhost" identified by "password"; 
     flush privileges;
    登录成功!

    解决Access denied for user ''@'localhost' to database 'mysql'问题
    原创你好龙卷风!!! 最后发布于2018-10-15 17:50:20 阅读数 6093 收藏
    展开
    在修改mysql的root用户密码后,再登陆,提示如标题的错误,找了一番答案之后,终于解决,步骤如下:

    1.停掉mysql:      service mysqld stop

    2.使用不验证的状态登陆mysql:    

              mysqld_safe --skip-grant-tables &   //后台运行

              启动mysql:   service mysqld start

    3.进入mysql:    mysql -u root

    4.use mysql;

    5. update user set password=password("new_pass") where user="root";// 'new_pass' 这里改为你要设置的密码

    或者

    5.delete from user where user='';   删除空用户

    6,flush privileges;

    7,quit

    8.service mysqld restart

    9.重新进入 mysql -utoot -p

    然后输入密码就会发现问题已解决  

  • 相关阅读:
    golang与vscode的安装与配置
    numpy学习之前的必要数学知识:线性代数
    分布式系统设计系列 -- 基本原理及高可用策略
    微服务的4个设计原则和19个解决方案
    JAVA8 十大新特性详解
    ConcurrentHashMap总结
    Java NIO理解与使用
    深入了解 Java-Netty高性能高并发理解
    java内存泄漏的定位与分析
    Netty高性能编程备忘录(下)
  • 原文地址:https://www.cnblogs.com/xianz666/p/12562783.html
Copyright © 2020-2023  润新知