最近在研究如何使用python来对于mysql数据库进行操作,但是中途遇到了一个问题,由于电脑新装的mysql版本是5.7.2,且初始的mysql, user后台内的 password项 变成了 authentication_string.
1. 首先以管理员模式打开cmd
2. 使用新打开的管理员身份下运行的cmd窗口输入以下代码:
mysqld --skip-grant-tables
有些同学的mysql安装目录可能不在C盘 需要切换盘符为你装mysql的那个盘 例如我的是D盘
我的文件夹目录为:D:\360Downloads\mysql-5.7.27-winx64
输入 D: 即可切换盘符 “注意:所有的代码都要用英文输入法,不然会出错,切记切记!”
在切换到正确的文件夹后,在mysql文件夹内bin目录下 运行以下命令:
D:\360Downloads\mysql-5.7.27-winx64\bin>mysqld --skip-grant-tables
D:\360Downloads\mysql-5.7.27-winx64\bin>mysqld --skip-grant-tables
你可以复制我的代码中需要的部分,但是我建议还是在英文输入法下 自己用手打进去
打完回车之后,这个窗口就不会动了,保持这个窗口在后台打开,再在管理员权限下重新开一个新的cmd窗口。
3. 在新窗口下,用上面切换盘符的方法,再把路径调整到你安装mysql的文件夹目录下
不出意外的话,会跳出来上图红框中的内容,提示你已经成功进入mysql的操作界面了
4. 在系统自动跳出来的 mysql> 代码后面,输入show databases;(你可以复制,但是如果出现错误,建议自己在英文输入法下自己一个个打进去)
show databases;
如果你成功了,那就会出现如下界面:
5. 下一步,系统会再次跳出 mysql>, 输入use mysql;(你可以复制,但是如果出现错误,建议自己在英文输入法下自己一个个打进去)
use mysql;
如果没错,会出现以下红框标出的画面:
6. 此时系统文字回复数据库已经切换至mysql,此时在新一行跳出来的 mysql>,输入 show tables;(你可以复制,但是如果出现错误,建议自己在英文输入法下自己一个个打进去)
show tables;
如果没错,会出现以下红框标出的 user 的画面:
7. 以下的步骤比较关键,因为我看了很多网上的教程,会让你输入:select user,host,password from user;
.意为从user这个table里去寻找 user, host 和 password的数据,但是5.7的mysql版本肯定会报错,因为就和这边文档刚开始说的一样,造成这个错误代码的原因就是 5.7版本的mysql开始,系统把password这个称呼改成了autentication_string, 所以你在输入select user,host,password from user; 命令的时候会提示你:
ERROR 1054 (42S22): Unknown column 'password' in 'field list' 找不到 password 这一项
8. 那么由于没有password这一项,你也就改不了密码,改不了密码,你也就无法登陆你的mysql数据库,回到了这篇文档最初的问题。关于5.7mysql 登录密码password 改变为 authentication_string
那么,有些小伙伴可能不是刚装5.7版本的mysql,而是之前设置过密码,但是忘了。那么如何修改密码,道理是一样的。
此时在新一行跳出来的 mysql>,输入 select user,host,authentication_string from user;(你可以复制,但是如果出现错误,建议自己在英文输入法下自己一个个打进去)
select user,host,authentication_string from user;
如果你的代码没错的话,会跳出上图的内容,显示了user, host, authentication_string(也就是老版本中的password)
9. 此时在新一行跳出来的 mysql>,输入 UPDATE user SET `authentication_string` = PASSWORD('root');(你可以复制,但是如果出现错误,建议自己在英文输入法下自己一个个打进去)
UPDATE user SET `authentication_string` = PASSWORD('root');
如果你的代码没有错误的话,就会出现上图的内容文字,说明已经把`authentication_string` 更新为了用户root的 PASSWORD内容
10. 下一步就很关键了,就是最终我们要修改密码的部分,在新一行跳出来的 mysql>,输入 update user set authentication_string='123456' where user='root';(你可以复制,但是如果出现错误,建议自己在英文输入法下自己一个个打进去)
update user set authentication_string='123456' where user='root';
切记切记,你直接复制进去回车可能会出现下图中我犯过的错误,这个和你用的输入法标点符号有关系,所以建议多试几次。
如果成功了的话,会出现上图红框内标出的内容。
此时,用户 root 的密码已经被改成 123456 了!!!!!
11. 想要查一下,密码是否成功修改,可以在新一行跳出来的 mysql>,输入 select user,host,authentication_string from user;(你可以复制,但是如果出现错误,建议自己在英文输入法下自己一个个打进去)
select user,host,authentication_string from user;
如果代码没错,会出现如下内容:
此时,root 的登录密码已经更改为 123456 了, 我用的数据库管理软件是navicat, 在后台尝试设置好用户名和密码之后,已显示成功连接。
以上就是这篇文档的全部内容了,如果有帮到你解决问题,码字不易,请动动小手点个赞吧,谢谢各位!
觉得有用,敬请打赏。:)