在此先感谢论坛博客的各位大佬,因为实在是查了太多资料,连我自己究竟是在哪里拼拼凑凑出解决办法的过程都差不多快模糊了,第一次安装数据库,花了3天终于搞定了,博主的很多教程都是旧版本的指令,根本无法运行。想了想还是得写一写留个纪念。
**
任务管理器->找到mysql.exe->结束人物进程
cmd命令行输入:net stop mysql; 服务停止中 -> 服务已停止
输入 cd D:\MySQL\mysql-8.0.15-winx64\bin
(注:地址是你自己的安装目录地址)
很多博主是输入“mysqld --skip-grant-tables ”,但是最新的数据库版本这个命令已失效,会发现命令窗口仍然跳出下一行待输入指令。
应该输入:mysqld --console --skip-grant-tables --shared-memory
生成界面如下,此时dos窗口不能运行,再另开一个cmd窗口操作第四步。
输入 mysql,如果成功,显示如下界面,下一行的提示命令为mysql
显示图片如下,最下面有一个user,里面就有我们想要的信息。
打*是因为这里容易出错,之前我复制黏贴输入的是select user,host,password from user;然后提示错误ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’
然后我把password给删了换成authentication_string,就行了。
看到user里有一个’root’,host里一一对应。
> 输入: update mysql.user set authentication_string=‘123’ where user=‘root’;
> 如果上面那个用不了,就试试这个: update mysql.user set authentication_string=(‘123’) where user=‘root’ and Host =‘localhost’;
离成功只差一步!然后就在这一步上死了无数次(吐血)
很多博主的修改方式是输入:update user set password=password(‘123’) where user=‘root’ and host=‘localhost’;
然后就会无数次报错:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘(‘123’) where user=‘root’ and host=‘localhost’’ at line 1
原因第七步其实已经讲的很清楚了,是因为数据库8.0已经没有’password’这个字段了,password字段改成了 authentication_string。所以需要将password改成authentication_string。
我已经疯了,老师叫我们安装SQLSERVER,我卸载了mysql,结果又有作业要用到,我又重新下载回来了,然后一模一样的错误,幸好我之前写了这个博客,结果这一步又错了,怎么肥事,经过百折不屈的百度我又把这玩意安回来了。
最后quit数据库,还会很萌地跟你say bye。
走了这么多步终于把密码改过来了,怕忘记赶紧把步骤写出来。
愉悦地开启数据库之旅吧。
提示:”ACCESS DENIED FOR USER ‘ROOT’@’LOCALHOST’ (USING PASSWORD: YES)”
我踏马快疯了。
重新按上面的方法跳过认证直接登陆mysql
然后show了一下user信息:(确实是这个密码啊??)
好吧,仔细看,上面的都是加密过得,而我们自己设置的密码是那样格格不入,我查了很多方式,大多都是说用**grant all privileges on . to ‘root’@’localhost’ identified by ‘mypassword’ with grant option;**给我们的root赋予权限,但是我一打上去,就开始疯狂报错:grant all privileges on . to ‘root’@’localhost’ identified by ‘mypassword’ with grant option;
我:???
看这篇文章的读者可以先试一试这个代码,也许你们可以成功,然鹅我好像怎么都没办法,接下来又开始百度。
#创建账户
create user ‘用户名’@‘localhost’ identified by ‘password’;
如果提示:The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
那就:flush privileges 刷新一下
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
接下来再创建一次,就能成功了,然后再刷新一次,退出mysql。
不放心的可以再show一次你的user表
select user,host,authentication_string from user;
就会看到你新建的这个已经加密了。
之后就可以用新账户快乐地登陆了。
(搞完了,现在我很怀疑自己之前花那么多时间去改root密码干什么,没用啊啊啊啊最后只要新创建一个账户就行了啊啊啊啊啊我好绝望)
行吧,安慰自己,我在变强,我在变强。告辞了大兄弟们,快乐的mysql去了。