My local environment is:
with installed MySQL 5.7
sudo apt-get install mysql-common mysql-server
When I tried to login to MySQL (via CLI):
mysql -u root -p
I came across an cyclic issue with 3 steps.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
Solution: restarting PC.
Which led to another error:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'.
Possible issue? Wrong password for "root" user!
Solution: reset root password with this tutorial.
With correct password and working socket, there comes last error.
mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"
Here I stopped or somehow got to 1) again.
I got a solution!
When resetting root password at step 2), also change the auth plugin to mysql_native_password
:
use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root'; # THIS LINE
flush privileges;
quit;
This allowed me to log in successfully!
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
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;
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
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 &
(thanks to @Cerin)
Or
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
(thanks to @Peter Dvukhrechensky)
mysql -uroot # "-hlocalhost" is default
Can lead to "missing file" or slt error.
mysql -uroot -h127.0.0.1
Works better.
I've found many ways to create mysqld.sock
file, change access rights or symlink it. It was not the issue after all.
my.cnf
fileThe issue also was not there. If you are not sure, this might help you.