ERROR 1698 (28000): Access denied for user ‘root‘@‘localhost‘

mysql --version结果:mysql  Ver 8.0.22-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))

安装mysql后执行sudo mysql_secure_installation,让设了root密码,选了删除自动创建的测试数据,选了允许远程root登录(问Disallow root login remotely?,输入n再回车)。

但完成后用mysql -uroot -p进行连接测试时,输刚才设置的root密码,报错ERROR 1698 (28000): Access denied for user 'root'@'localhost'

参考链接里步骤有点乱,所以再整理一下。

总体分两步,进入数据库,修改root密码。

其中进入数据库有两种方式

方法一:使用安装后自带的账号登录数据库(参考链接1)

  1. sudo cat /etc/mysql/debian.cnf
  2. client中的user和password就是账号密码,mysql -u debian-sys-maint -p,然后输入密码

方法二:设置无需密码即可登录数据库,输密码时直接按回车(参考链接2和参考链接3)

  1. sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
  2. 在mysqld中添加一行,skip-grant-tables,保存退出
  3. service mysql restart
  4. mysql -uroot -p,输密码时直接按回车

然后开始改密码

主要步骤来自参考链接2,所以以上面的方法二为例,下面的部分命令是方法二需要的。

  1. use mysql;
  2. flush privileges;
  3. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; # 添加新用户并修改用户身份验证方式,caching_sha2_password是mysql8.0.4开始的方式,之前是mysql_native_password,参考链接4,参考链接5,mysql官方说明。这句的注释是在查navicat连不上mysql时回来补充的,因写文章时不知道这句意思,查的时候刚好看到。解决navicat连接mysql报错的方法
  4. ALTER user 'root'@'localhost' IDENTIFIED BY '你的密码'; (测试可以不执行这一行,执行也不报错。但若不执行上一行而执行这一行,报错)
  5. flush privileges;
  6. quit
  7. 注释掉前面添加的skip-grant-tables
  8. service mysql restart

3、4、5每步都返回Query OK, 0 rows affected (0.00 sec)

最后重新进行连接测试,mysql -uroot -p,输入第3步中自己设置的密码(3和4密码一样)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值