Я получаю следующую ошибку при попытке запустить несколько команд, и я не знаю пароль всякий раз, когда меня об этом просят. (Примечание: я только что обновил свой дистрибутив Ubuntu до версии 22.04, но ранее у меня не был установлен пароль или был пустой пароль для «root»).
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (13)'
Из большинства сообщений следует, что общая проблема заключается в том, что mysql-server на самом деле не запущен. Я вижу, что мой запущен, хотя, sudo service mysql status
и следующие команды возвращают...
$ cat /etc/services | grep 3306
mysql 3306/tcp
$ netstat -tulpn | grep 3306
(No info could be read for "-p": geteuid()=1000 but you should be root.)
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:33060 0.0.0.0:* LISTEN
Эти команды выдают ошибку «Невозможно подключиться...»:
- mysqladmin -u root -p выключение
- версия mysqladmin
- mysql
- mysql -u корень
- mysql -u root -h локальный хост -p
Запуск, mysql -u root -h 127.0.0.1 -p
кажется, работает, поскольку запрашивает у меня пароль, но ни один из моих предыдущих паролей не подходит, и мне не удалось запустить его sudo mysqld_safe --skip-grant-tables &
или sudo mysqld_safe --skip-grant-tables --skip-networking &
успешно сбросить пароль root.
Я также бежал...
- sudo apt-get install --reinstall mysql-server
- обновление sudo apt
- обновление sudo apt
- sudo apt install mysql-сервер
- sudo apt install mysql-client
- sudo usermod -d /var/lib/mysql/ mysql
- sudo dpkg --configure -a
- и следовал рекомендациям из двух лучших ответов в этом посте:https://stackoverflow.com/questions/41984956/cant-reset-root-password-with-skip-grant-tables-on-ubuntu-16
- и попытался удалить MySQL, следуя инструкциямздесь
- и попытался сделать резервную копию папки sock и восстановить ее, как было рекомендованоздесь
Дополнительная случайная информация:
Я также знаю, что он /var/run/mysqld/mysqld.sock
существовал ранее в этом процессе (сейчас у меня в этом каталоге есть только mysql.bak), но когда я запускаю sudo find / -type s
, он просто возвращает кучу файлов/каталогов с сообщением «Отказано в доступе» (полагаю, потому что я в WSL), поэтому я не проверял, может ли где-то быть еще один mysql.sock.
Я также знаю, что это /etc/mysql/my.cnf
просто указывает на -> /etc/alternatives/my.cnf
, в котором есть только следующее (кроме некоторых комментариев):
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
решение1
- Остановите MySQL (sudo systemctl stop mysql)
- Убедитесь, что процесс остановлен
- Запустите MySQL с опцией --skip-grant-tables
Альтернативный способ очистки mysql: sudo apt purge mariadb-server mysql-common Убедитесь, что /etc/mysql и /var/lib/mysql пусты/удалены.
Переустановить