it-swarm.com.ru

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

Я пытаюсь настроить 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: подключиться к серверу по адресу «localhost» 
 ошибка: «Доступ запрещен для пользователя« root »@« localhost »(с использованием пароля: НЕТ )»

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

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

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

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

 ОШИБКА 1045 (28000): доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: НЕТ)
307
nikola

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

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

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

Шаг за шагом:

brew remove mysql

brew cleanup

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

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

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

Я тогда начал с нуля:

  1. установлен MySQL с brew install mysql
  2. выполнил команды, предложенные Brew:

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

  4. Использовал альтернативный скрипт безопасности:

    /usr/local/Cellar/mysql/5.5.10/bin/mysql_secure_installation
    
  5. После раздела launchctl из выходных данных скрипта пакета brew, таких как,

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

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

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

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

633
Lorin Rivers

Вот подробные инструкции, объединяющие избавление от всего MySQL с вашего Mac и установку его The Brew Way, как писал Седорнер выше:

Удалите MySQL полностью за Техническая лаборатория

  • ps -ax | grep mysql
  • остановить и 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, он не должен работать

Заварите установку MySQL для каждого пользователя Sedorner из этого StackOverflow 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.

44
corysimmons

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

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

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

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

mysqld_safe --skip-grant-tables

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

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

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

42
Alistair McMillan

Если brew установил MySQL 5.7, процесс немного отличается от предыдущих версий . Для сброса пароля 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 --password=TEMPORARY_PASSWORD
12
mrucci

Хорошо, у меня была та же проблема, и я решил ее. По какой-то причине скрипт mysql_secure_installation не работает сразу после установки 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

8
Darren Newton

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

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

8
Mark

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

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

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

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

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

Устанавливать

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

Мне нравится запускать brew от имени root, но я не думаю, что вы должны это делать. Изменить 2018: вы больше не можете запускать Brew от имени root

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

Потом

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

варево информация 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, но это не помогло мне.

3
Felipe Duardo

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 работал как шарм.

2
Nicholas

Попробуйте, дав Грант разрешение Command of mysql

1
XMen

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

Указание более старой версии с помощью (например)

brew install mysql56

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

1
toddmetheny

«Базовый путь» для Mysql хранится в /etc/my.cnf, который не обновляется при обновлении brew. Просто откройте его и измените значение basedir

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

[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
Bernhard Zürn

У меня была та же проблема после того, как я попытался перезапустить 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 и повторной попытки перезагрузки у меня возникла проблема. Я посмотрел на загрузку launchctl, и она сообщала об ошибке «ничего не найдено для загрузки».

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

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'

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

0
Alexander Millar

Вот обновление для MySQL 5.7

 bash - версия 
 GNU bash, версия 4.4.12 (1) -релиз (x86_64-Apple-darwin17.0.0) 
 Copyright (C) 2016 Free Software Foundation, Inc .
 Лицензия GPLv3 + : GNU GPL версии 3 или новее 

 Это свободное программное обеспечение; Вы можете изменять и распространять его .
 ГАРАНТИИ НЕ ПРЕДОСТАВЛЯЮТСЯ в той степени, в которой это допускается законом ..______. # =================== ===================== 
 brew --version 
 Homebrew 1.7.6 
 Homebrew/homebrew-core (git revision eeb08; последний коммит 2018-09-27) 
 Homebrew/homebrew-cask (git revision c9f62; последний коммит 2018-09-27) 

 # ================ ======================== 
 mysql --version 
 mysql Ver 14.14 Distrib 5.7.23, для osx10.13 (x86_64) с использованием Оболочка EditLine 

 # =======================================
 system_profiler SPSoftwareDataType
Software:

 Обзор системного программного обеспечения: 

 Версия системы: macOS 10.13.3 (17D47) 
 Версия ядра: Дарвин 17.4.0 
 Объем загрузки: Macintosh HD 
 Режим загрузки: Нормальный 
 Имя компьютера: EdisonMacHomeBj 
 Имя пользователя: Эдисон (edison) 
 Безопасная виртуальная память: включена 
 Защита целостности системы: отключено 
 Время с момента загрузки: 6 дней 23:13 
 brew удалить [email protected]
brew cleanup
mv/usr/local/var/mysql /usr/local/var/mysql.bak
brew установить [email protected]
rm -rf/USR/местные/вар/MySQL 

 # ==================================== ==== 
 mysqld --initialize 
 2018-09-28T04: 54: 06.526061Z 0 [Предупреждение] TIMESTAMP с неявным значением DEFAULT устарела. Пожалуйста, используйте --explicit_defaults_for_timestamp параметр сервера (см. Документацию для получения дополнительной информации) .
 2018-09-28T04: 54: 06.542625Z 0 [Предупреждение] Установка lower_case_table_names = 2, потому что файловая система для/usr/local/var/mysql/является без учета регистра 
 2018-09-28T04: 54: 07.096637Z 0 [Предупреждение] InnoDB: созданы новые файлы журнала, LSN = 45790 
 2018-09-28T04: 54: 07.132950Z 0 [Предупреждение] InnoDB: создание внешнего системные таблицы ключевых ограничений .
 2018-09-28T04: 54: 07.196824Z 0 [Предупреждение] Не найдено ни одного существующего UUID, поэтому мы предполагаем, что это первый запуск этого сервера. Генерация нового UUID: 87cf2f10-c2da-11e8-ac2d-ba163df10130 .
 2018-09-28T04: 54: 07.224871Z 0 [Предупреждение] Таблица Gtid не готова к использованию. Таблица «mysql.gtid_executed» не может быть открыта .
 2018-09-28T04: 54: 07.366688Z 0 [Предупреждение] CA-сертификат ca.pem самоподписан .
 2018-09-28T04: 54: 07.457954Z 1 [Примечание] Временный пароль генерируется для root @ localhost: kq3K = JR8; GqZ 

 # ======================== =============== 
 mysql_secure_installation -uroot -p "kq3K = JR8; GqZ" 
 mysql_secure_installation: [Предупреждение] Использование пароля в интерфейсе командной строки может быть небезопасным. 

 Защита развертывания сервера MySQL .


 Срок действия существующего пароля для учетной записи root истек. Пожалуйста, установите новый пароль .

 Новый пароль: 

 Повторно введите новый пароль: 

 VALIDATE PASSWORD PLUGIN можно использовать для проверки паролей 
 И повышения безопасности. Он проверяет надежность пароля 
 И позволяет пользователям устанавливать только те пароли, которые достаточно безопасны 
 Вы хотите установить плагин VALIDATE PASSWORD? 

 Нажмите y | Y для Да, любую другую клавишу для Нет: n 
 Использование существующего пароля для root .
 Изменить пароль для root? ((Нажмите y | Y для Да, любую другую клавишу для Нет): y 

 Новый пароль: 

 Повторно введите новый пароль: 
 По умолчанию установка MySQL имеет анонимный пользователь, 
 позволяющий кому-либо входить в MySQL без необходимости создавать для него учетную запись 
 Это предназначено только для 
 тестирования и для того, чтобы установка прошла более гладко .
 Вам следует удалите их перед переходом в рабочую среду 
 .

 Удалить анонимных пользователей? (Нажмите y | Y для Да, любую другую клавишу для Нет): y 
 Успех .


 Обычно пользователю root разрешается подключаться только с 
 'Localhost'. Это гарантирует, что кто-то не сможет угадать 
 Пароль root от сети .

 Запретить root-вход удаленно? (Нажмите клавишу y | Y для Да, любой другой ключ для Нет): n 

 ... skipping .
 По умолчанию MySQL поставляется с базой данных с именем 'test', доступ к которой может получить каждый 
 Это также предназначен только для тестирования 
 и должен быть удален перед переходом в рабочую среду 
 .


 Удалить тестовую базу данных и доступ к нему? (Нажмите y | Y для Да, любую другую клавишу для Нет): n 

 ... пропуск .
 Перезагрузка таблиц привилегий обеспечит немедленное вступление в силу всех изменений 
, сделанных до сих пор .

 Перезагрузить таблицы привилегий сейчас? (Нажмите y | Y для Да, любую другую клавишу для Нет): y 
 Успех .

 Все готово! 
0
Edison