zoukankan      html  css  js  c++  java
  • MYSQL ERROR 1045 (28000) Access denied for user (using password YES)问题的解决

    我的Linux是Centos6.7的版本,本机上Mysql突然怎么连接都进不去

    报错:MYSQL ERROR 1045 (28000) Access denied for user (using password YES)

    在网上查了一下,大概两种方法,仅供参考

    第一种方法: 推荐
    错误描述: Mysql中添加用户之后可能出现登录时提示ERROR 1045 (28000): Access denied for user的错误.

    原因分析: 在mysql.user表中可能出现user为空的记录,如:

    mysql> select host,user from user;
    +------------------+------+
    | host | user |
    +------------------+------+
    | % | test |
    | localhost | |
    | localhost | root |
    +------------------+------+
    3 rows in set (0.00 sec)

    解决 办法: 删除这些为空的用户或者更新为其他用户名

    删除user.user中值为NULL的,或更新NULL为test

    1)delete from user where user is NULL
    2)update user set user='test' where user is NULL

    意外的情况: 如果上述方法没有效果,依然出现空用户,则可以利用图形化用户client删除.

    第二种方法:linux下
    因为要搞一个项目,所以需要安装MySql,以往安装MySql都是非常顺利的,尤其MySql提供的rmp包,

    只需双击下就可以搞定~但不知道什么时候,MYSQL ERROR 1045 (28000): Access denied for user (using password: YES),这个拒绝访问问题变得非常广泛。
    百度了一下,没有现成的解决方法,唯有找出其问题所在了。
    解决问题思路:
    第一步,先使用跳过受权表访问,命令如下:mysqld_safe --user=mysql --skip-grant-tables --skip-networking & (当然,在这之前,先停止mysql服务的运行)。
    第二步,mysql -uroot mysql 登录mysql。
    第三步,访问mysql数据库下的user表。在我的机器上,mysql> select * from user; 得到的,竟然是
    Empty set (0.00 sec)。这说明了,我的mysql没有任何可以访问的用户。知道了这问题所在,解决起来就简单了。
    第四步,mysql> INSERT INTO user(host, user, password, select_priv, insert_priv, update_priv) VALUES ('localhost', 'username', PASSWORD(‘yourpassword'), 'Y', 'Y','Y');
    Query OK, 1 row affected, 3 warnings (0.00 sec)
    返回成功,没问题。嘿嘿~~~就这么简单。
    第五步,测试,再重启下mysql服务,正常登录,成功!!!

    提示:mysql系统中的mysql数据库,存储的是系统数据,像这里的user表存储的是用户信息及其访问权限,还有其他,例如你要新建一个数据库mydb,这数据库有用户me管理的话,mysql数据库里面的db表就会存储相关信息。废话步多说了。

    下面是windows 的解决方法:
    但如果我们用虚拟主机管理系统开启的用户,而且用户数比较多的时候,好像也不是好办法。

    我使用重新安装了mysql,然后进入虚拟主机,逐个删除,重新开数据库,操作之前一定要备份好原来的data目录,最后覆盖下空间数据库就可以了。

    二:
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) denied for user 'root'@'localhost' (using password: NO)
    我猜想是不是密码忘记了。。。然后准备修改密码:
    #mysqladmin -u root -p password 123456     ###设置root密码为123456
     
    Enter password:
    mysqladmin: connect to server at 'localhost' failed
    error: 'Access denied for user 'root'@'localhost' (using password: YES)'
     
    方法一:
    # /etc/init.d/mysqld stop
    # mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
    # mysql -u root mysql
    mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;
    mysql> FLUSH PRIVILEGES;
    mysql> quit
    # /etc/init.d/mysqld restart
    # mysql -uroot -p
    Enter password: <输入新设的密码newpassword>
    mysql>
     
    方法二:
    直接使用/etc/mysql/debian.cnf文件中[client]节提供的用户名和密码:
    # mysql -udebian-sys-maint -p
    Enter password: <输入[client]节的密码>
    mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’;
    mysql> FLUSH PRIVILEGES;
    mysql> quit
    # mysql -uroot -p
    Enter password: <输入新设的密码newpassword>
    mysql>
     
    方法三:
    这种方法我没有进行过测试,因为我的root用户默认密码已经被我修改过了,那位有空测试一下,把结果告诉我,谢谢!
    # mysql -uroot -p
    Enter password: <输入/etc/mysql/debian.cnf文件中[client]节提供的密码>

    再者不行用Navicat for mysql 工具进行

  • 相关阅读:
    ASP.NET 2.0 中的代码隐藏和编译
    魅族M8 UI新架构
    详细讲解大型数据库的设计原则与开发技巧
    [ZT]精彩的国外育儿教育读本,图文并茂
    企業導入ERP項目要防止「君子」作亂
    [ZT]VS2005 中 Lc.exe已退出,代码为 1,今天剛遇到就找了
    图像词汇
    VS2005 + VSS2005 的方法
    几种SQL Server数据库分页方式
    DB2 Express版与SQL Server标准版技术比较
  • 原文地址:https://www.cnblogs.com/Mr-wx/p/8744011.html
Copyright © 2011-2022 走看看