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: подключиться к серверу на локальном хосте 
ошибка: "Доступ запрещен для пользователя" 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' (используется пароль: НЕТ)

18 ответов

Решение

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

Б / у 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 будет также очищать устаревшие кеги, думаю, что это новая функция доморощенного.

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

Вот подробные инструкции, сочетающие в себе избавление от всех 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, это не должно работать

Brew установить MySQL для каждого пользователя Sedorner из этого ответа Stackru

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

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

Godspeed.

Была такая же проблема. Похоже, что-то не так с инструкциями по настройке или начальными таблицами, которые создаются. Вот так я запустил 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 и новый пароль, который вы только что установили.

Домашнее пиво

  1. Во-первых, убедитесь, что у вас установлен homebrew
  2. Бежать brew doctor и обратитесь к тому, что homebrew хочет, чтобы вы исправили
  3. Бежать brew install mysql
  4. Бежать brew services restart mysql
  5. Бежать mysql.server start
  6. Бежать mysql_secure_installation

Если 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

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

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

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

Если 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.

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

Варево информация 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)

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

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

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

Это бесплатное программное обеспечение; Вы можете изменять и распространять его.
НЕ ПРЕДОСТАВЛЯЕТСЯ ГАРАНТИИ, если это разрешено законом.

#========================================
варить
Доморощенный 1.7.6
Homebrew/homebrew-core (git revision eeb08; последний коммит 2018-09-27)
Homebrew/homebrew-cask (git revision c9f62; последний коммит 2018-09-27)

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

#========================================
system_profiler SPSoftwareDataType
Программного обеспечения:

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

      Версия системы: macOS 10.13.3 (17D47)
      Версия ядра: Дарвин 17.4.0
      Объем загрузки: Macintosh HD
      Режим загрузки: Нормальный
      Имя компьютера: EdisonMacHomeBj
      Имя пользователя: Эдисон (Эдисон)
      Безопасная виртуальная память: включена
      Защита целостности системы: отключена
      Время с момента загрузки: 6 дней 23:13
brew remove mysql@5.7 brew cleanup mv /usr/local/var/mysql /usr/local/var/mysql.bak brew install mysql@5.7 rm -rf / usr / local / var / 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 Успешно. Все сделано!

Просто чтобы добавить что-то к предыдущим ответам - при обновлении с MySql 5.6 до MySql 8.0 я выполнил приведенные здесь шаги, чтобы выполнить чистое удаление, но у меня были следующие ошибки

2019-11-05T07:57:31.359304Z 0 [ERROR] [MY-000077] [Server] /usr/local/Cellar/mysql/8.0.18/bin/mysqld: Error while setting value 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' to 'sql_mode'.
2019-11-05T07:57:31.359330Z 0 [ERROR] [MY-013236] [Server] The designated data directory /usr/local/var/mysql is unusable. You can remove all files that the server added to it.
2019-11-05T07:57:31.359413Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-11-05T07:57:31.359514Z 0 [Note] [MY-010120] [Server] Binlog end

Мне потребовалось некоторое время, чтобы понять это. Нашел здесь подсказку: https://discourse.brew.sh/t/clean-removal-of-mysql/2251

Итак, ключом к моей проблеме было удаление файла /usr/local/etc/my.cnf после удаления. После этого последнего шага MySql, наконец, начал работать.

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

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

brew install mysql56

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

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

У меня была та же проблема после того, как я попытался перезапустить 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'

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

Попробуйте решение, которое я предоставил для MariaDB, большое изменение, которое также работает с MySQL:

Пароль root для MacOSX homebrew mysql

Короче попробуйте войти под своим логином! не корень.

Попробуйте использовать то же имя, что и имя пользователя вашей учетной записи MacOS, например, johnsmit.

Чтобы войти в систему как root, введите:

mysql -u johnsmit

"Базовый путь" для 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

удаление/opt/homebrew/var/mysqlсделал работу. Судя по всему там были данные mysql (включая пароль) так что все эти вышеописанные манипуляции ни к чему не привели.

Другие вопросы по тегам