Brew установить MySQL на Mac OS

257

Я пытаюсь настроить MySQL на mac os 10.6 с помощью Homebrew на brew install mysql 5.1.52.

Все идет хорошо, и я также добился успеха с mysql_install_db.
Однако, когда я пытаюсь подключиться к серверу, используя:

/usr/local/Cellar/mysql/5.1.52/bin/mysqladmin -u root password 'mypass'

Я получаю:

/usr/local/Cellar/mysql/5.1.52/bin/mysqladmin: connect to server at 'localhost' 
failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'

Я попытался получить доступ к mysqladmin or mysql using -u root -proot, а также,
но он не работает с паролем или без него.

Это совершенно новая установка на совершенно новом компьютере, и насколько я знаю, новая установка должна быть доступна без пароля root. Я также пробовал:

/usr/local/Cellar/mysql/5.1.52/bin/mysql_secure_installation

но я также получаю

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Показать ещё 1 комментарий
Теги:
homebrew
mysql-error-1045
osx

13 ответов

541
Лучший ответ

Я думаю, что в этой должности можно положить старые версии mysql, которые уже установлены. У меня была та же проблема, и ни один из вышеперечисленных решений не работал у меня. Я зафиксировал его таким образом:

Использованы команды brew remove и cleanup, выгрузили launchctl script, а затем удалили каталог mysql в /usr/local/var, удалили мой существующий /etc/my.cnf (оставьте это до вас, должно оно применяется) и startctl plist

Обновлена ​​строка для plist. Обратите внимание, что ваш альтернативный каталог безопасности script будет основан на той версии MySQL, которую вы устанавливаете.

Шаг за шагом:

brew remove mysql

brew cleanup --force

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

sudo rm -rf /usr/local/var/mysql

Затем я начал с нуля:

  • установлен mysql с brew install mysql
  • выполнили команды brew: (см. примечание: ниже)

    unset TMPDIR
    
    mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
    
  • Запустите mysql с помощью команды mysql.server start, чтобы иметь возможность входа в систему

  • Используется альтернативная безопасность script:

    /usr/local/Cellar/mysql/5.5.10/bin/mysql_secure_installation
    
  • Последовал раздел launchctl из вывода brew script, например,

    #start
    launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    
    #stop
    launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    
  • Boom.

Надеюсь, что это поможет кому-то!

Примечание: бит --force на brew cleanup также очистит устаревшие бочонки, подумайте, что это новая ирригация.

Обратите внимание на второе: комментатор говорит, что шаг 2 не требуется. Я не хочу его проверять, поэтому YMMV!

  • 11
    Спасибо, работал как шарм!
  • 0
    Спасибо за подробную инструкцию! Установка MySQL в Mac всю ночь наполовину убила меня.
Показать ещё 20 комментариев
39

Была та же проблема. Похоже, что что-то не так с инструкциями по настройке или с создаваемыми исходными таблицами. Вот как я получил mysqld на моей машине.

Если сервер mysqld уже запущен на вашем Mac, сначала остановите его:

launchctl unload -w ~/Library/LaunchAgents/com.mysql.mysqld.plist

Запустите сервер mysqld с помощью следующей команды, которая позволяет любому пользователю войти в систему с полными разрешениями.

mysqld_safe --skip-grant-tables

Затем запустите mysql -u root, который должен теперь позволить вам успешно войти в систему без пароля. Следующая команда должна reset всех корневых паролей.

UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES;

Теперь, если вы убьете запущенную копию mysqld_safe и запустите ее снова без опции skip-grant-tables, вы должны войти в систему с помощью mysql -u root -p и нового пароля, который вы только что установили.

  • 0
    Это сработало для меня! Я начал угадывать пароль еще до того, как попробовал это сделать, и в итоге пароль стал «паролем». Так что попробуй это.
  • 0
    Запуск mysqld_safe без таблиц грантов работал для меня. Однако, ОБНОВЛЕНИЕ не работало, так как у меня нет записей о select * from mysql.user; Поскольку мы уже вошли в систему как пользователь root, мы можем просто вставить его для пользователя root, запустив GRANT ALL PRIVILEGES ON . TO 'root' @ 'localhost', идентифицированный 'любым'; ПРИВИЛЕГИИ ПРОМЫВКИ;
Показать ещё 2 комментария
37

Вот подробные инструкции, сочетающие избавление от всего MySQL с вашего Mac, а затем его установку. Brew Way as Sedorner написал выше:

Удалить MySQL полностью за The Tech Lab

  • ps -ax | grep mysql
  • stop и kill любые процессы MySQL
  • sudo rm /usr/local/mysql
  • sudo rm -rf /usr/local/var/mysql
  • sudo rm -rf /usr/local/mysql*
  • sudo rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
  • sudo rm -rf /Library/StartupItems/MySQLCOM
  • sudo rm -rf /Library/PreferencePanes/My*
  • launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
  • отредактируйте /etc/hostconfig и удалите строку MYSQLCOM=-YES-
  • rm -rf ~/Library/PreferencePanes/My*
  • sudo rm -rf /Library/Receipts/mysql*
  • sudo rm -rf /Library/Receipts/mysql*
  • sudo rm -rf /private/var/db/receipts/*mysql*
  • попробуйте запустить mysql, он не должен работать

Brew установите MySQL для пользователя Sedorner из этого https://stackoverflow.com/questions/4359131/brew-install-mysql-on-mac-os answer

  • brew doctor и исправить ошибки
  • brew remove mysql
  • brew cleanup
  • brew update
  • brew install mysql
  • unset TMPDIR
  • mysql_install_db --verbose --user= Whoami --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
  • mysql.server start
  • запустите команды Brew, добавьте MySQL в launchctl, чтобы он автоматически запускался при запуске

mysql должен работать и работать все время, как ожидалось

Godspeed.

  • 2
    Я также укусил, выполнив все вышеперечисленное без предварительного удаления /tmp/mysql.sock.
  • 0
    Да. Это. Работал.
Показать ещё 10 комментариев
8

У меня была такая же проблема только сейчас. Если вы brew info mysql и следуете инструкциям, это выглядит так: пароль root должен быть new-password, если я правильно помню. Я видел то же самое, что вы видите. Эта статья помогла мне больше всего.

Оказалось, что у меня нет аккаунтов, созданных для меня. Когда я вошел в систему после запуска mysqld_safe и сделал select * from user;, строки не были возвращены. Я открыл MySQLWorkbench при запуске mysqld_safe и добавил учетную запись root со всеми привилегиями, которые я ожидал. Сейчас это работает хорошо для меня.

7

Если brew установлен MySQL 5.7, процесс немного отличается от предыдущего. Чтобы reset пароль root, выполните следующие действия:

sudo rm -rf /usr/local/var/mysql
mysqld --initialize

Временной пароль будет напечатан на консоли, и его можно использовать только для обновления пароля root:

mysql.server start
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'my-new-password';" | mysql -uroot -pTEMPORARY_PASSWORD
  • 1
    Я вижу сгенерированный временный пароль, но когда я пытаюсь запустить mysql, я получаю: ERROR! The server quit without updating PID file (/usr/local/var/mysql/XXXXX.local.pid). и когда я делаю mysql -u root, пароль не принимается.
  • 0
    Я успешно установил mysql 5.7.9 с помощью установщика dmg, который подсказал мне о том, что он сгенерировал временный пароль для меня. И теперь mysql работает правильно. Жаль, что мне пришлось потратить огромное количество времени, чтобы заставить его работать над новым Macbook. : |
Показать ещё 2 комментария
7

Хорошо, у меня была такая же проблема и она была решена. По какой-то причине mysql_secure_installation script не работает из коробки при использовании Homebrew для установки mysql, поэтому я сделал это вручную. В CLI введите:

mysql -u root

Это должно привести вас в mysql. Теперь сделайте следующее (взятое из mysql_secure_installation):

UPDATE mysql.user SET Password=PASSWORD('your_new_pass') WHERE User='root';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'
DROP DATABASE test;
FLUSH PRIVILEGES;

Теперь выйдите и вернитесь в mysql с помощью: mysql -u root -p

  • 1
    Это решение не работает для меня, потому что mysql -u root не выводит меня на приглашение mysql. В нем говорится, что доступ запрещен для пользователя 'root' @ 'localhost' (используется пароль: НЕТ)
  • 0
    У вас была предыдущая установка MySQL на этом компьютере?
3

Если mysql уже установлен

Остановить mysql полностью.

  • mysql.server stop < - может потребоваться редактирование на основе вашей версии
  • ps -ef | grep mysql < - перечисляет процессы с mysql в их имени
  • kill [PID] < - убить процессы с помощью PID

Удалить файлы. Инструкции, приведенные выше, хороши. Я добавлю:

  • sudo find /. -name "*mysql*"
  • Используя ваше мнение, rm -rf эти файлы. Обратите внимание, что во многих программах есть драйверы для mysql, которые вы не хотите удалять. Например, не удаляйте файлы в каталоге установки PHP. Удалите материал в своем собственном каталоге mysql.

Установка

Надеюсь, у вас есть доморощенный. Если нет, загрузите его.

Мне нравится запускать brew как root, но я не думаю, что вам нужно.

  • sudo brew update
  • sudo brew install cmake < - зависимость для mysql, полезная
  • sudo brew install openssl < - зависимость для mysql, полезная
  • sudo brew info mysql < - skim через это... это дает вам некоторое представление о том, что будет дальше
  • sudo brew install mysql --with-embedded; say done < - устанавливает mysql со встроенным сервером. Сообщает вам, когда он заканчивается (моя установка заняла 10 минут).

Далее

  • sudo chown -R mysql /usr/local/var/mysql/ < - mysql не будет работать для меня, пока я не запустил эту команду
  • sudo mysql.server start < - еще раз, точный синтаксис может меняться
  • Создайте пользователей в mysql (http://dev.mysql.com/doc/refman/5.7/en/create-user.html). Не забудьте добавить пароль для пользователя root.
3

brew info mysql

mysql: stable 5.6.12 (bottled)
http://dev.mysql.com/doc/refman/5.6/en/
Conflicts with: mariadb, mysql-cluster, percona-server
/usr/local/Cellar/mysql/5.6.12 (9363 files, 353M) *
  Poured from bottle
From: https://github.com/mxcl/homebrew/commits/master/Library/Formula/mysql.rb
==> Dependencies
Build: cmake
==> Options
--enable-debug
    Build with debug support
--enable-local-infile
    Build with local infile loading support
--enable-memcached
    Enable innodb-memcached support
--universal
    Build a universal binary
--with-archive-storage-engine
    Compile with the ARCHIVE storage engine enabled
--with-blackhole-storage-engine
    Compile with the BLACKHOLE storage engine enabled
--with-embedded
    Build the embedded server
--with-libedit
    Compile with editline wrapper instead of readline
--with-tests
    Build with unit tests
==> Caveats
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.

To connect:
    mysql -uroot

To reload mysql after an upgrade:
    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

mysql.service start

. ERROR! The server quit without updating PID file (/var/run/mysqld/mysqld.pid).

или mysql -u root

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Я ищу какое-то решение, но я не могу решить свою проблему. Я попробовал несколько решений в stackoverflow.com, но это не помогло мне.

  • 4
    Попробуйте запустить sudo chown -R mysql /usr/local/var/mysql/ перед запуском mysql.server start если вы запускаете mysql.server от имени пользователя root (при запуске с использованием пользователя root сервер MySQL _mysql пользователя _mysql ).
  • 0
    Эй, ты случайно не нашел решения этой проблемы?
Показать ещё 1 комментарий
1

TL; DR

Сервер MySQL может не запускаться после установки с помощью Brew. Попробуйте brew services start mysql или просто mysql.server start, если вы не хотите, чтобы MySQL выполнялся как фоновая служба.

Полная история:

Я только что установил MySQL (стабильный) 5.7.17 на новом MacBook Pro, работающем на Sierra, а также получил ошибку при запуске mysql_secure_installation:

Securing the MySQL server deployment.

Enter password for user root: 
Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Скажите что?

В соответствии с информацией об установке от Brew, mysql_secure_installation должен предложить мне... защитить установку. Я полагал, что сервер MySQL может не работать и правильно. Выполнение brew services start mysql, а затем mysql_secure_installation работало как шарм.

1

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

Указание более старой версии, говоря (например)

brew install mysql56

Работал для меня. Надеюсь, это поможет кому-то. Это была разочаровывающая проблема, что я чувствовал, что я застрял навсегда.

  • 0
    Да, это будет работать, но если вы хотите установить MySQL 5.7 (как в настоящее время выполняется brew install mysql ), вы можете следовать указаниям в моем ответе stackoverflow.com/a/33924648/133106
1

Попробуйте предоставить разрешение Гранта Команда mysql

  • 0
    проблема в том, что я не могу получить доступ к серверу mysql вообще после установки brew. Я могу запустить его, но он не пропустит меня как root с паролем или без него. (поэтому я не могу создавать других пользователей или управлять разрешениями .. или я вас не понял?
0

"Base-Path" для Mysql хранится в /etc/my.cnf, который не обновляется при обновлении brew. Просто откройте его и измените значение baseir

Например, измените это:

[mysqld]
basedir=/Users/3st/homebrew/Cellar/mysql/5.6.13

чтобы указать на новую версию:

[mysqld]
basedir=/Users/3st/homebrew/Cellar/mysql/5.6.19

Перезапустите mysql с помощью:

mysql.server start
0

У меня была такая же проблема после того, как я попытался перезапустить mysql.

Я использую следующие два псевдонима в моем .profile для удобства

alias mysql-stop='launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist'
alias mysql-start='launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist' 

После остановки mysql, а затем попытки перезагрузки, я столкнулся с проблемой, с которой вы столкнулись. Я заглянул в загрузку startctl и сообщал об ошибке "ничего не найдено".

После быстрого поиска я нашел это.

http://www.daveoncode.com/2013/02/01/solve-mac-osx-launchctl-nothing-found-to-load-error/

Итак, я обновил псевдоним mysql-start следующим образом

alias mysql-start='launchctl load -w -F ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist'

Это решило мою проблему, которая может быть полезна для вас.

  • 2
    Brew теперь поддерживает команду services , поэтому их можно заменить на brew services stop mysql и brew services start mysql соответственно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню