• 用grant命令为用户赋权限以后,登录时,出现:ERROR 1045 (28000)


    ERROR 1045(28000)信息是因为权限的问题。这个ERROR分为两种情况:

    第一种:

    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO),这种情况是没有用密码直接登录,这时需要输入密码

    第二种:

    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES),这种情况是用了密码了,但是,密码不对或者是本地用这个用户名和密码没有权限连接登录

    下面主要说一下,针对第二种情况如何解决:

    先说一下我的使用场景:首先,在安装好mysql后利用mysqladmin工具,设置了用户名root和密码123456后,利用这个用户名和密码,登录后,进入mysql数据库,然后,利用:

    mysql>grant all on openfire.* to mysql@'%' identified by '123456';

    mysql>flush privileges;

    mysql>exit;

    然后,利用新用户名mysql和密码123456登录:

    mysql -umysql -p123456 回车,出现了第二种情况。

    此时,我们利用root用户登录,发现没有任何问题,然后,我们输入以下Sql语句查看下数据库存储用户的表:

    mysql>use mysql;

    mysql>select host,user from user;

    注意: //@"%" 表示对所有非本地主机授权,不包括localhost。不建议设为本机IP,防止IP变化。

    通过这个sql语句查看一下,我们发现,mysql用户在本机(localhost或者127.0.0.1)上通过mysql用户无法连接数据库,于是我们再次利用grant重新为mysql用户赋予权限

    mysql>grant all on openfire.* to mysql@localhost identified by '123456';

    mysql>flush privileges;

    mysql>exit;

    再次利用mysql用户登录,这时候可以成功登录。我的这种情况是本机不能用特定用户连接数据库。

    另外一种就是密码错误时的情况:

    用户登录时,首先会在数据库user表里查找这个表,那么是不是可绕过这张权限表呢。答案是可以的。我们先停下mysql服务,service mysqld stop,然后,找到my.cnf文件,在[mysqld]下方,添加:

    skip-grant-tables,如下所示:

     

    保存后,重启mysql的服务,然后,登录时,不输入密码,可以成功登录。

  • 相关阅读:
    单链队列
    栈的顺序存储表示
    顺序队列
    串的定长顺序存储表示
    串的堆分配存储
    双向循环链表
    单循环链表的表示和实现
    串的块链存储表示
    线性表的顺序表示和实现
    线性表的单链表表示和实现
  • 原文地址:https://www.cnblogs.com/comeonbaby/p/5280374.html
Copyright © 2020-2023  润新知