MySQL не работает: mysql "ошибка 1524 (HY000): плагин "auth socket" не загружен"
моя локальная среда:
- свежий Ubuntu 16.04
- С PHP 7
-
с установленным MySQL 5.7
sudo apt-get install mysql-common mysql-server
когда я попытался войти в MySQL (через CLI):
mysql -u root -p
я столкнулся с циклической проблемой с 3 шагами.
1) Сначала была проблема с сокетом
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
решение: перезагрузка ПК.
что привело к еще ошибка:
2) с отказом в доступе
ERROR 1698 (28000): Access denied for user 'root'@'localhost'.
можно вопрос? Неверный пароль для пользователя "root"!
устранение: сброс пароля root с помощью этого урока.
С правильным паролем и рабочим гнездом, появляется последняя ошибка.
3) неверный плагин auth
mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"
здесь я остановился или как-то добрался до 1) снова.
4 ответов
у меня есть решение!
при сбросе пароля root на Шаге 2), также измените плагин auth на 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;
это позволило мне успешно войти!
полное решение код
1. команды запустить bash
# 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. затем запустите MySQL commands => copy вставьте это в cli вручную
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. запустите больше команд bash
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start # reset mysql
mysql -u root -p root # try login to database
4. Выпуск сокета (из ваших комментариев)
когда вы видите гнездо ошибка, сообщество пришло с 2 возможными решениями:
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
(спасибо @Cerin)
или
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
(спасибо @ Peter Dvukhrechensky)
слепые пути и возможные ошибки края
используйте 127.0.0.1 вместо localhost
mysql -uroot # "-hlocalhost" is default
может привести к "отсутствует файл" или "ошибка" та.
mysql -uroot -h127.0.0.1
строительство лучше.
пропустить проблему сокета
Я нашел много способов, чтобы создать mysqld.sock
файл, изменить права доступа или символическую ссылку на него. Это не было вопросом.
пропустить
проблема также не была там. Если вы не уверены, это может помочь вам.
вы можете попробовать эти шаги:
остановить службу Mysql 1st
sudo /etc/init.d/mysql stop
войти как root без пароля
sudo mysqld_safe --skip-grant-tables &
после входа в mysql терминал вам нужно будет выполнить команды больше:
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
после перезагрузки сервера mysql Если вы все еще сталкиваетесь с ошибкой, вы должны посетить:сбросить MySQL 5.7 root пароль Ubuntu 16.04
вы можете попробовать, как это работает для меня.
запустить сервер:
sudo service mysql start
Теперь перейдите в папку sock:
cd /var/run
назад носок:
sudo cp -rp ./mysqld ./mysqld.bak
остановить сервер:
sudo service mysql stop
восстановить носок:
sudo mv ./mysqld.bak ./mysqld
начать mysqld_safe:
sudo mysqld_safe --skip-grant-tables --skip-networking &
Init MySQL shell:
mysql -u root
изменить пароль:
следовательно, сначала выберите базу данных
mysql> use mysql;
теперь введите ниже два запроса:
mysql> update user set authentication_string=password('1111') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root'; # THIS LINE
теперь все будет ОК.
mysql> flush privileges;
mysql> quit;
для проверки:
mysql -u root -p
готово!
вы также можете проверить имя хоста / phpmyadmin