This post is about how to reset your mysql root password if you cannot recall it and you have lost it forever.
First thing first you need to make sure that your mysql server is turned off. This can be done by the following commands.
Debian or older Ubuntu:

#service mysql stop

Centos 6 or lower:

#service mysqld stop

Centos 7, Fedora20, latest version of Ubuntu:

#systemctl stop mariadb.service

After we have stopped the mysql database server we will start the server manually with skipping the grant table. This will not load the tables where the passwords are stored.

#mysqld_safe --skip-grant-tables

You should see the mysql start in the foreground. If you see any error messages then you will have to analyze more in dept fact which is not covered in this post. You will need to open a new session of console to be able to connect to the database without password:

#mysql -u root
Once connected you can update your root password with a new one:

mysql> update user set Password=PASSWORD('newpassword') where user='root';
mysql> flush privileges;
mysql> quit;

Now it's time to kill the existing mysqld process and restat the server normally.

#killall -9 mysqld_safe

Starting the mysql server on Debian or older Ubuntu OS:

#service mysql start

Starting the mysql server on Centos 6 or older:

#service mysqld start

Centos 7, Fedora20, latest version of Ubuntu:

#systemctl start mariadb.service