MySQL fails on: mysql “ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded”

前端 未结 9 1549
广开言路
广开言路 2020-11-28 00:21

My local environment is:

  • fresh Ubuntu 16.04
  • with PHP 7
  • with installed MySQL 5.7

    sudo apt-get install mysql-common mysql-se         
    
    
            
相关标签:
9条回答
  • 2020-11-28 01:02

    In case someone lands here after making the same mistake I did:

    1. Switched to plugin="mysql_native_password" temporarily. Performed my tasks.
    2. Attempted to switch back to the "auth_socket" plugin, but incorrectly referenced it as plugin="auth_socket" which resulted in mysql "ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded"
    3. Lacking a way to login to fix this mistake, I was forced to have to stop mysql and use mysql_safe to bypass authentication in order to switch to the appropriate plugin plugin="unix_socket"

    Hopefully this saves someone some time if they receive the original poster's error message, but the true cause was flubbing the plugin name, not actually lacking the existence of the "auth_socket" plugin itself, which according to the MariaDB documentation:

    In MariaDB 10.4.3 and later, the unix_socket authentication plugin is installed by default, and it is used by the 'root'@'localhost' user account by default.

    0 讨论(0)
  • 2020-11-28 01:04

    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!


    Full code solution

    1. run bash commands

    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 &
    

    (thanks to @Cerin)

    Or

    mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld  
    

    (thanks to @Peter Dvukhrechensky)


    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.

    Skip the socket issue

    I've found many ways to create mysqld.sock file, change access rights or symlink it. It was not the issue after all.

    Skip the my.cnf file

    The issue also was not there. If you are not sure, this might help you.

    0 讨论(0)
  • 2020-11-28 01:10

    You can try these some steps:

    Stop Mysql Service 1st sudo /etc/init.d/mysql stop

    Login as root without password sudo mysqld_safe --skip-grant-tables &

    After login mysql terminal you should need execute commands more:

    use mysql;
    
    UPDATE mysql.user SET authentication_string=PASSWORD('solutionclub3@*^G'), plugin='mysql_native_password' WHERE User='root';
    
    flush privileges;
    
    sudo mysqladmin -u root -p -S /var/run/mysqld/mysqld.sock shutdown
    

    After you restart your mysql server If you still facing error you must visit : Reset MySQL 5.7 root password Ubuntu 16.04

    0 讨论(0)
  • 2020-11-28 01:14

    The mysql command by default uses UNIX sockets to connect to MySQL.

    If you're using MariaDB, you need to load the Unix Socket Authentication Plugin on the server side.

    You can do it by editing the [mysqld] configuration like this:

    [mysqld]
    plugin-load-add = auth_socket.so
    

    Depending on distribution, the config file is usually located at /etc/mysql/ or /usr/local/etc/mysql/

    0 讨论(0)
  • 2020-11-28 01:14

    Try it: sudo mysql_secure_installation

    Work's in Ubuntu 18.04

    0 讨论(0)
  • 2020-11-28 01:16

    You can try as follows it works for me.

    Start server:

    sudo service mysql start
    

    Now, Go to sock folder:

    cd /var/run
    

    Back up the sock:

    sudo cp -rp ./mysqld ./mysqld.bak
    

    Stop server:

    sudo service mysql stop
    

    Restore the sock:

    sudo mv ./mysqld.bak ./mysqld
    

    Start mysqld_safe:

     sudo mysqld_safe --skip-grant-tables --skip-networking &
    

    Init mysql shell:

     mysql -u root
    

    Change password:

    Hence, First choose the database

    mysql> use mysql;
    

    Now enter below two queries:

    mysql> update user set authentication_string=password('123456') where user='root';
    mysql> update user set plugin="mysql_native_password" where User='root'; 
    

    Now, everything will be ok.

    mysql> flush privileges;
    mysql> quit;
    

    For checking:

    mysql -u root -p
    

    done!

    N.B, After login please change the password again from phpmyadmin

    Now check hostname/phpmyadmin

    Username: root

    Password: 123456

    For more details please check How to reset forgotten password phpmyadmin in Ubuntu

    0 讨论(0)
提交回复
热议问题