Ubuntu登录MySQL提示Access denied for user ‘root‘@‘localhost‘
Linux MySQL登录问题,登录提示Access denied for user 'root'@'localhost',问题已解决。
问题情景
前些时间因为某些需求租了一台腾讯云的服务器,装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了解尚浅,如有表述或方法不对的地方敬请指出!
欢迎转载,劳请注明原文链接~
更多推荐
所有评论(0)