Я только что установил MySQL (той же версии, что вы перечислили), используя Homebrew, и столкнулся с проблемами, похожими на вашу.
Я отмечу, что моя копия Homebrew, вероятно, не здорова; brew doctor
продолжает предупреждать меня, особенно о предполагаемой установке MacPorts или fink, и я планирую в какой-то момент перерисовать эту старую коробку с нуля.
Это сказало, что я взломал мой путь через проблему, используя следующее:
mkdir /local/var/mysql
# From the `brew info mysql` command's output:
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
(Это только три команды; игнорируйте комментарий #, если вставляете их в свой терминал).
Оттуда я запустил mysqld_safe --skip-grant-tables
в одном терминале и, с другого, подключился к этому серверу, используя mysql -u root
. Оттуда я побежал:
UPDATE mysql.user SET Password=PASSWORD('**MY_NEW_PASSWORD**') WHERE User='root';
FLUSH PRIVILEGES;
Выйдите из сеанса сервера, нажав Ctrl-C, а затем я убил mysqld_safe
с помощью mysqladmin -u root -p shutdown
и перезапустил MySQL со ссылкой Homebrew: mysql.server start
Это, кажется, сделало работу. Я не знаю, будет ли он автоматически запускать MySQL при перезапуске моего Mac; но я все равно этого не хочу. Если это работает для вас, этого должно быть достаточно, чтобы вы попали в само руководство. Вам, возможно, придется открывать терминал и запускать mysql.server start
каждый раз, когда вы хотите работать с вашими базами данных, конечно ... и я позволю вам самостоятельно искать его для добавления в launchctl
если вы этого хотите).
Обратите внимание, что часть о запуске mysqld_safe --skip-grant-tables
является способом "взлома" ваших баз данных MySQL, позволяя вам локально подключаться как "root" (суперпользователь MySQL или администратор), не зная старого пароля) , Другие посты здесь на SO предполагают, что Homebrew должен был установить каталог и установить для вас исходный пароль "новый пароль".
Команда UPDATE, которую я показал здесь, является частью обычного процесса, с помощью которого любой администратор MySQL будет принудительно восстанавливать пароль для любой системы MySQL, где пароль root был утерян. База данных с именем "mysql" хранит собственные таблицы управления MySQL, а в таблице "user" есть столбцы для "Password" и "User". Функция PASSWORD() берет простой текст (пароль, который вы собираетесь ввести) и хэширует его, то есть выполняет сложный набор математических операций над числовым кодированием строки / текста, который похож на "контрольная сумма". MySQL хранит такие хэши в столбце Password в mysql.user, а не в виде простого текста самого пароля.
Хеширование паролей является функцией почти всех операционных систем, систем баз данных и большинства других систем и приложений, где используются пароли. Если вы в конечном итоге будете писать веб-приложения, то, скорее всего, вы будете использовать какую-то функцию хеширования для хранения и проверки паролей.
Как я уже сказал, я использую команду brew info mysql
чтобы получить несколько советов о том, как "исправить" установку MySQL; Вы можете использовать эту команду для любых других вещей, которые вы устанавливаете через Homebrew, если она не работает так, как вы ожидаете.
Вот другая статья StackOverflow, которую я использовал для дальнейшей помощи: https://stackoverflow.com/questions/4359131/brew-install-mysql-on-mac-os
Я намеренно перебил некоторые из этих деталей, потому что вы сказали, что вы очень новичок во всем этом.
(На днях некоторые действительно опытные участники СО скажут мне предпочтительный способ перекрестной ссылки на другие вопросы СО, ответы и комментарии).