更细: 关于8.0。参考链接:https://blog.csdn.net/qq_42348937/article/details/86326470#ps
最新更新:之前的方法貌似修改错了,目前也不知道错哪了,只是连接不上数据库。最新方法:
在MySQL的使用过程中,我们可能会碰到“Access denied for user 'root'@'localhost' (using password:YES)”的问题,那么接下来我们就来解决它。
经过我的百度查询最后得出结论:出现这种错误有两种可能,一是MySQL的root用户的密码错误,二是权限不够的问题。通常解决办法是修改密码。。。
由于我使用的是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 [Warning] The syntax '--log' is deprecated and will be removed inMySQL 7.0. Please use '--general_log'/'--general_log_file' instead.
170215 22:26:09 [Warning] The syntax '--log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '--slow_query_log'/'-- slow_query_log_file' instead.
170215 22:26:09 [Warning] The syntax '--log' is deprecated and will be removed in MySQL 7.0. Please use '--general_log'/'--general_log_file' instead.
170215 22:26:09 [Warning] The syntax '--log_slow_queries' is deprecated and will be removed in MySQL 7.0. Please use '--slow_query_log'/'--slow_query_log_file' instead.
170215 22:26:09 [ERROR] The update log is no longer supported by MySQL in version 5.0 and above. It is replaced by the binary log. Now starting MySQL with --log-bin='' instead.
170215 22:26:09 InnoDB: Started; log sequence number 0 324221
170215 22:26:09 [Note] mysqld: ready for connections.Version: '5.1.33-community-log' socket: '' port: 3306 MySQL Community Server (GPL)
4、再以管理员的身份打开一个cmd.exe,输入命令行来到mysql的bin目录下,输入:mysql -uroot mysql
5、进入mysql之后,输入命令行修改密码:
mysql>update user set 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了。
命令中的具体细节目前还不清楚。严格按照这个方法来就行了。这个操作修改了原本的密码和。使用快捷方式打开的密码也修改了。
------------------------------------------分割线---------------------------------------------------------------------------------
MySQL数据库安装成功后,可以使用命令行工具启动mysql。
在cmd中执行:c:\Users\Adminidtrator>net start mysql57 //启动数据库
数据库的启动也可以在:计算机->管理->服务和应用程序->服务->mysql57来启动和关闭;
启动成功后,执行:c:\Users\Adminidtrator>mysql -u admin -p
Enter password:*******
此时,可能会提示:ERROR 1045 (28000): Access denied for user 'admin'@'localhost' (using password: YES)错误。错误原因有人说是权限问题(具体不清楚)。
这问题出现就是进不去Mysql,那也就无法操作用户和密码。MySQL提供了一种免去密码校验进去数据库的方式,我们先使用这种方式进入数据库中,然后将默认的密码换掉。具体操作如下:
c:\Users\Adminidtrator>net stop mysql57 //关闭数据库
windows下找到my.ini文件(默认在Program Data文件夹中,在windows下默认为隐藏文件夹,设置隐藏文件可见)。进入MySQL\MySQL Server 5.7\my.ini
查找mysqld,在mysqld项下加入skip-grant-tables(没有前面的#,#相当于注释。修改密码成功后加上#或者删除这一句)。
修改成功后保存。
在cmd中开启mysql:c:\Users\Adminidtrator>net start mysql57
系统会提示:MySQL57 服务正在启动 .
MySQL57 服务已经启动成功。
如果提示启动失败,可能是my.ini文件修改错误,请严格对照。
之后执行:
mysql>create user 'admin'@'localhost' identified by '123456';
会提示:The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
意思是在这个选项下运行,这个命令不行。
现在需要:
mysql>flush privileges;
再执行:
mysql>create user 'admin'@'localhost' identified by '123456';
系统会提示成功。
现在结束mysql57,然后在my.ini文件中删除或注释掉加入的选项。再重新启动mysql57。再执行:
c:\Users\Adminidtrator>mysql -u admin -p
Enter password:****** //刚刚设置的密码:123456
就成功进入mysql。
//这只是使用cmd命令行启动。其实可以使用MySQL 5.7 Command Line Client - Unicode应用程序快捷方式启动mysql。
(这里修改密码好像不影响使用快捷方式启动?暂且不管)