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)
- sudo cat /etc/mysql/debian.cnf
- client中的user和password就是账号密码,mysql -u debian-sys-maint -p,然后输入密码
方法二:设置无需密码即可登录数据库,输密码时直接按回车(参考链接2和参考链接3)
- sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
- 在mysqld中添加一行,skip-grant-tables,保存退出
- service mysql restart
- mysql -uroot -p,输密码时直接按回车
然后开始改密码
主要步骤来自参考链接2,所以以上面的方法二为例,下面的部分命令是方法二需要的。
- use mysql;
- flush privileges;
- 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报错的方法
- ALTER user 'root'@'localhost' IDENTIFIED BY '你的密码'; (测试可以不执行这一行,执行也不报错。但若不执行上一行而执行这一行,报错)
- flush privileges;
- quit
- 注释掉前面添加的skip-grant-tables
- service mysql restart
3、4、5每步都返回Query OK, 0 rows affected (0.00 sec)
最后重新进行连接测试,mysql -uroot -p,输入第3步中自己设置的密码(3和4密码一样)
1万+

被折叠的 条评论
为什么被折叠?



