mysql数据库登陆错误#1045:Access denied for user 'root'@'localhost' (using password: YES)
分类:编程 来源:互联网 时间:9年前 (2016年04月22日) 2633 0今天好不容易安装好了MYSQL,然后访问phpmyadmin登陆竟然提示
ERROR 1045 : Access denied for user'root'@'localhost'(usingpassword:YES)
真是郁闷,问题一大堆
用mysql -uroot -p登录时也一样,首先就判断是不是密码输错了。直接用mysql -uroot也登录不进,于是就想重新设一下密码看看,步骤如下:
1.停止mysql服务:使用cmd转到mysql的安装目录输入
net stop mysql
或者直接在服务里点停止
2.以不检查权限的方式登录:
#bin/mysqld_safe --skip-grant-tables &
(进入你安装mysql的目录运行此条命令,比如我的mysql安装在/usr/local/mysql;如果你不想进入安装目录,则可以直接输入
/usr/local/mysql/bin/mysqld_safe --skip-grant-tables &)
或者修改my.ini文件加上一句
skip-grant-tables
然后启动mysql服务
3.用空密码登录,直接按回车,成功登录mysql
mysql -uroot -p
4.手动更新mysql库中的user表从而设置新密码:mysql>
update mysql.user set password=password("你要设置的密码") where user="用户名,这里用root";
5.刷新mysql的系统权限相关表,使密码生效:mysql>
flush privileges;
6.退出:mysql>
exit;
修改my.ini把skip-grant-tables去掉,在前面加#号或直接去掉,
7.重启mysql服务:
net start mysql
再用新密码登录看看,可以正常登录了。
当然这种方法也可以用来解决忘记mysql密码的问题。
------------------------------------分割线------------------------------------------------
网上其他方法
访问首页出现
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: YES) in c:InetpubwwwrootclasscoreIBMysql.php on line 51 mysql error: 1045:Access denied for user 'root'@'localhost' (using password: YES)
数据库连接文件里的用户名和密码设的不对
在config.php里改下你mysql的帐户的用户名和密码
帐户用root就得填上root对应的密码
错误描述: 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下
开场白:解决LINUX问题是一种乐趣,当然,能遇到问题就是上天赐的享受幸福的机会。
这次使用的是Mandriva2008spring。
因为要搞一个项目,所以需要安装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表就会存储相关信息。