Access denied for user ‘root’@‘localhost’ (using password:YES)解决方方案
问题描述
出现这个报错语句的一般原因是输入了错误的密码,也有可能是是root帐户默认不开放远程访问权限。
相关的解决方法是重新设置密码和修改root用户的远程访问权限。
解决方法:
修改密码方法一:
1、打开MySQL目录下的my.ini文件,把以下命令添加进[mysqld]里面,保存并关闭文件。(MySQL8.0路径为:C:\ProgramData\MySQL\MySQL Server 8.0下面)
1、skip-grant-tables
2、停止MySQL服务–右击停止
3、通过命令行进入MySQL的bin目录,输入“mysql -u root -p”(不输入密码),回车即可进入数据库。
4、执行“use mysql;”,使用mysql数据库。
use mysql;
5、执行
update user set password=PASSWORD(“123456”) where user=‘root’;(修改root的密码)
如果报错说明原来是新版本的mysql数据库下已经没有password这个字段了,password字段正式改成了authentication_string字段,执行以下命令
update MySQL.user set authentication_string=password(‘root’) where user=‘root’ ;(修改root的密码)
6、打开MySQL目录下的my.ini文件,删除“skip-grant-tables”,保存并关闭文件。
7、重启MySQL服务。
在命令行中输入“mysql -u root -p 123456”,即可成功连接数据库。
修改密码方法二:
由于我使用的是Windows系统,所以方法也是Windows系统的修改方法:
1、开始 → 搜索栏里面输入cmd → 右键cmd.exe选择以管理员的身份运行(亦可以在C:\Windows\System32目录下找到这个cmd.exe,右键,以管理员身份运行)
2、输入 net stop mysql 停止MySQL服务
3、输入命令行来到mysql的bin目录下,输入下列粗体命令
D:\MySQL\bin> mysqld --defaults-file=“D:\ MySQL\my.ini” --console --skip-grant-tables
等一下,显示出以下结果说明MySQL启动:
170215 22:26:09 [警告] 语法“–log”已弃用,并将在 MySQL 7.0 中删除。 请改用“–general_log”/“–general_log_file”。
170215 22:26:09 [警告] 语法“–log_slow_queries”已弃用,并且 将在 MySQL 7.0 中删除。 请使用’–slow_query_log’/‘-- 改为 Slow_query_log_file’。
170215 22:26:09 [警告] 语法 ‘–log’ 已弃用,并将在 MySQL 7.0 中删除。 请用 改为“–general_log”/“–general_log_file”。
170215 22:26:09 [警告] 语法“–log_slow_queries”已弃用,并且 将在 MySQL 7.0 中删除。 请用 ‘–slow_query_log’/‘–slow_query_log_file’ 代替。
170215 22:26:09 [错误] MySQL 不再支持更新日志 5.0及以上版本。 它被二进制日志取代。 现在开始 MySQL 用 --log-bin=‘’ 代替。
170215 22:26:09 InnoDB:已启动; 日志序列号 0 324221
170215 22:26:09 [注意] mysqld: 准备连接。版本: ‘5.1.33-community-log’套接字:’'端口:3306 MySQL社区服务器 (通用公共许可证)
4、再以管理员的身份打开一个cmd.exe,输入命令行来到mysql的bin目录下,输入: mysql -uroot mysql
5、进入mysql之后,输入命令行修改密码:
mysql> 更新用户集authentication_string=password(‘123456’) where user=‘root’;
6、刷新权限:mysql> flush privileges;
7、退出mysql: mysql> quit;
8、关闭MySQL:D:\MySQL\bin> mysqladmin shutdown(出现错误,则:mysqladmin -uroot -p shutdown 然后输入新密码)
9、至此修改密码完成,可以输入命令行: net start mysql 启动MySQL服务, mysql -uroot -p ,输入密码就可以进入mysql了。
修改权限方法三:
此报错的原因则是没有开通权限
1、打开cmd命令面板
2、输入 mysql -u root -p,之后输入密码(数据库root账户的密码)
3、开通权限
全部开放
GRANT ALL PRIVILEGES ON . TO ‘root’@‘%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
指定ip开放
GRANT ALL PRIVILEGES ON . TO ‘root’@‘192.168.12.1’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
4、刷新权限 flush privileges;5、重启MySQL net stop mysql, net start mysql到此这篇关于解决MySQL登录报错1045-Access denied for user ‘root‘@‘‘(using password:YES)的文章就介绍到这了。