1. first, run these bash commands
sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql
2. then run mysql commands => copy paste this to cli manually
use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user
flush privileges;
quit;
3. run more bash commands
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password prompt because your password is now blank
mysql -u root -p
4. Socket issue (from your comments)
When you see a socket error, a community came with 2 possible solutions:
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
Blind paths and possible edge errors
Use 127.0.0.1 instead of localhost
mysql -uroot # "-hlocalhost" is default
Can lead to "missing file" or slt error.
mysql -uroot -h127.0.0.1
Works better.