今天在云服务器上的 Ubuntu 下安装了 MySQL,结果遭遇了无法使用 root 用户登陆的窘境,也便有了一番折腾,记录下具体步骤。
整体环境
OS:Ubuntu Server 20.04 LTS 64位
Database:MySQL 8.0.21
问题
安装 MySQL 后使用 root 账户进行登录,提示 ERROR 1698(28000)…

获取 debian-sys-maint 账户密码
debian-sys-maint 账户是 Debian、Ubuntu 下安装 MySQL 默认存在一个账户,而我们可以使用此账户登陆 MySQL 再对 root 用户密码进行重置。
查看 debian.cnf 文件获取密码。
shell
sudo cat /etc/mysql/debian.cnf
结果中 password 部分就是需要的密码。

修改 MySQL root 密码
- 使用 debian-sys-maint 用户登陆 MySQL

- 查看 MySQL 的用户表
先切换数据库,在执行查询。
sql
use mysql;
select host,user,plugin,authentication_string from user;

- 设置 'root' 密码
sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

- 再次查看用户表内容
sql
select host,user,plugin,authentication_string from user;
flush privileges;

使用 root 用户登录 MySQL
shell
mysql -u root -p
