问题情景

前些时间因为某些需求租了一台腾讯云的服务器,装MySQL,做云数据库用。今天登录MySQL时无论怎么试,都报这个错 "Access denied for user 'root'@'localhost'",寻思着可能是密码记错了,于是乎找重置密码的方法,找了很多方法,花了小半个下午,尝试,未果。

最后这篇博客给了我启发,得以解决。不过其中几个过程因为遇到了另外的一些问题,实际操作跟原博有些出入,在此记录一下。

博客原址:https://blog.csdn.net/qq_25686343/article/details/100132524

配置环境

MySQL版本:mysql Ver 8.0.28

服务器:Ubuntu 20.04.3

解决过程

按照原博说明,修改my.cnf文件(在/etc下没有my.cnf,于是新建了一个)

满怀期待 登录mysql,然而,没用,依旧提示"Access denied for user 'root'@'localhost'"(生无可恋.jpg)。

想起在另外一篇博客下看到可以用安全模式登录mysql,嗯...好像可以安全登录,然后照原博修改密码,开搞!

① 停止mysql服务

# 执行命令 
systemctl stop mysql
# 或者
service mysql stop

② 以安全模式登录mysql

sudo mysqld_safe --skip-grant-tables

如果此处提示 mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

like this:

在/var/run下创建mysqld文件夹就可以,然后修改用户组为mysql:

sudo chown mysql:mysql mysqld/

然后重新执行

sudo mysqld_safe --skip-grant-tables

③ 免密进入mysql,置空密码

请保证此时mysql处于安全模式(②步骤已完成),新打开一个terminal,执行 mysql -uroot -p 进入mysql交互界面,此时登录是不需要密码的。

like this:

④ 置空密码

mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> update user set authentication_string='' where user='root';

Query OK, 1 row affected (0.01 sec)

Rows matched: 1 Changed: 1 Warnings: 0

⑤ 修改密码

ok,至此,root密码已经置空,然后我继续按照原博所说,修改root密码

# !!!此处为错误再现,不要照做

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysql';

但报错了

哈哈,显然是在因为在安全模式下的原因,接着往下做。

退出mysql安全模式,实测执行②步骤的终端中 ctrl+c 不得行,ok,那就杀进程。

执行 top,shift+m按照内存进行排序,按键盘k输入mysqld进程pid杀掉进程,我这儿就mysqld占用最高,所以直接按k+回车就默认杀掉最上面的进程。

like this:

然后启动mysql服务:

systemctl start mysql 
# 或者
service mysql start

进入mysql(因为刚刚置空了root密码所以此时登录不需要密码)

mysql -uroot -p

成功进入

 好嘞,差最后一步修改root密码。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysql';

Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.01 sec)

mysql> quit

Bye

=================================

至此,密码修改完毕,我修改的密码就是"mysql",读者可按需设置。

对Linux和mysql了解尚浅,如有表述或方法不对的地方敬请指出!

欢迎转载,劳请注明原文链接~

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐