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
Я тогда начал с нуля:
- установлен 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
команда, чтобы иметь возможность войти в нееИспользовал альтернативный скрипт безопасности:
/usr/local/Cellar/mysql/5.5.10/bin/mysql_secure_installation
Последовал за
launchctl
раздел из выходных данных скрипта пакета brew, таких как,#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!
Вот подробные инструкции, сочетающие в себе избавление от всех 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
и новый пароль, который вы только что установили.
Домашнее пиво
- Во-первых, убедитесь, что у вас установлен homebrew
- Бежать
brew doctor
и обратитесь к тому, что homebrew хочет, чтобы вы исправили - Бежать
brew install mysql
- Бежать
brew services restart mysql
- Бежать
mysql.server start
- Бежать
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 полностью.
mysql.server stop
<- может потребоваться редактирование в зависимости от вашей версииps -ef | grep mysql
<- перечисляет процессы с mysql в названииkill [PID]
<- убить процессы по PID
Удалить файлы. Инструкции выше хороши. Я добавлю:
sudo find /. -name "*mysql*"
- Используя ваше суждение,
rm -rf
эти файлы. Обратите внимание, что многие программы имеют драйверы для mysql, которые вы не хотите удалять. Например, не удаляйте вещи в каталоге установки PHP. Удалите вещи в своем собственном каталоге mysql.
устанавливать
Надеюсь, у вас есть доморощенный. Если нет, загрузите его.
Мне нравится запускать brew от имени пользователя root, но я не думаю, что вы должны это делать. Изменить 2018: вы больше не можете запускать Brew от имени root
sudo brew update
sudo brew install cmake
<- зависимость для MySQL, полезноsudo brew install openssl
<- зависимость для MySQL, полезноsudo brew info mysql
<- просмотрите это... это дает вам некоторое представление о том, что будет дальше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.
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
Работал на меня. Надеюсь, это кому-нибудь поможет. Это была неприятная проблема, и я чувствовал, что застрял навсегда.
У меня была та же проблема после того, как я попытался перезапустить 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 (включая пароль) так что все эти вышеописанные манипуляции ни к чему не привели.