Назад | Перейти на главную страницу

Сброс пароля MySQL не работает (невозможно подключиться без предоставленных таблиц) на OSX

Позвольте мне начать с того, что я просмотрел массу сообщений (оба Вот и еще были в Интернете и статья на mysql.com о сбросе пароля администратора) о сбросе пароля mysql, но у меня ничего не работает. О, я тоже новичок в работе с командной строкой.

Ниже «решение», которое, кажется, работает для всех, но не для меня:


Last login: Mon Nov  3 12:02:21 on console
maurice@Maurices-MacBook-Pro:~$ sudo /usr/local/mysql/support-files/mysql.server stop
Password:
Shutting down MySQL
. SUCCESS! 
maurice@Maurices-MacBook-Pro:~$ sudo mysqld_safe --skip-grant-tables
141103 12:25:35 mysqld_safe Logging to '/usr/local/mysql/data/Maurices-MacBook-Pro.local.err'.
141103 12:25:35 mysqld_safe A mysqld process already exists
maurice@Maurices-MacBook-Pro:~$ 

Я не знаю, откуда взялся этот другой процесс, и понятия не имею, как его закрыть. Если я продолжу следовать инструкциям и открою новую вкладку консоли, я получу следующее:


Last login: Mon Nov  3 12:25:16 on ttys000
maurice@Maurices-MacBook-Pro:~$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
maurice@Maurices-MacBook-Pro:~$ sudo mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
maurice@Maurices-MacBook-Pro:~$ 

Я не могу войти в mysql, чтобы обновить пароль. Я могу общаться с MySQL через mysql команда, но (конечно) я не могу делать никаких запросов:


maurice@Maurices-MacBook-Pro:~$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.21 MySQL Community Server (GPL)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';
ERROR 1142 (42000): UPDATE command denied to user ''@'localhost' for table 'user'
mysql> 

Весь вчерашний вечер я провел в поисках решений, но нигде не могу найти. Пожалуйста, помните, что я новичок в работе с командной строкой, поэтому, если я пропущу что-то действительно простое; Прости!

Я очень надеюсь, что кто-то знает решение, потому что у меня нет вариантов

Изменить (решение): Пол Холдейн указал мне правильное направление. Я забыл, что добавил com.mysql.mysql.plist файл, который я загружал через launchctl при запуске, чтобы автоматически запускать MySQL при запуске. Сначала делаем sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysql.plist остановил MySQL и разрешил мне войти в безопасный режим.

Так счастлив прямо сейчас :)

Такое поведение подразумевает, что уже запущен демон MySQL, когда вы пытаетесь запустить новый без аутентификации. Для этого есть две возможные причины. 1. команда mysql.server stop не работает, несмотря на сообщение об успешном выполнении, или 2. запущен процесс супервизора, который автоматически перезагружает сервер, если он умирает. Вы сможете определить, что с вами происходит, посмотрев на запущенные процессы с помощью ps. Пытаться

ps uaxww | grep -i mysql

Это даст вам список процессов. Если основной mysqld был запущен какое-то время, то это причина 1, если он только что запустился, то скорее всего причина 2. В любом случае завершите процессы с помощью команды kill (через sudo). Просто обычное уничтожение - не используйте -9, так как это не даст MySQLd возможности полностью завершить работу. После этого вы сможете запустить демон без аутентификации.