brew установить mysql на macOS

Я пытаюсь настроить 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

Я думаю, что можно оказаться в этом положении с уже установленными более ранними версиями 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 также очистит устаревшие кеги, считайте, что это новая функция домашнего brew cleanup.

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

Ответ 2

Вот подробные инструкции, объединяющие избавление от всего 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*
  • sudo rm -rf/tmp/mysql*
  • попробуйте запустить mysql, он не должен работать

Brew установить MySQL для каждого пользователя Sedorner из этого ответа fooobar.com/questions/25685/...

  • 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 чтобы он автоматически launchctl при запуске

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

Godspeed.

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

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

  1. mysql.server stop <- может потребоваться редактирование в зависимости от вашей версии
  2. ps -ef | grep mysql 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 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.

Ответ 8

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, но это не помогло мне.

Ответ 9

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

Ответ 10

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

Ответ 11

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

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

brew install mysql56

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

Ответ 12

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

bash --version
GNU bash, version 4.4.12(1)-release (x86_64-apple-darwin17.0.0)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

#========================================
brew --version
Homebrew 1.7.6
Homebrew/homebrew-core (git revision eeb08; last commit 2018-09-27)
Homebrew/homebrew-cask (git revision c9f62; last commit 2018-09-27)

#========================================
mysql --version
mysql  Ver 14.14 Distrib 5.7.23, for osx10.13 (x86_64) using  EditLine wrapper

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

    System Software Overview:

      System Version: macOS 10.13.3 (17D47)
      Kernel Version: Darwin 17.4.0
      Boot Volume: Macintosh HD
      Boot Mode: Normal
      Computer Name: EdisonMacHomeBj
      User Name: Edison (edison)
      Secure Virtual Memory: Enabled
      System Integrity Protection: Disabled
      Time since boot: 6 days 23:13
brew remove [email protected]
brew cleanup
mv /usr/local/var/mysql /usr/local/var/mysql.bak
brew install [email protected]
rm -rf /usr/local/var/mysql

#========================================
mysqld --initialize
2018-09-28T04:54:06.526061Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-09-28T04:54:06.542625Z 0 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive
2018-09-28T04:54:07.096637Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-09-28T04:54:07.132950Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-09-28T04:54:07.196824Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 87cf2f10-c2da-11e8-ac2d-ba163df10130.
2018-09-28T04:54:07.224871Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-09-28T04:54:07.366688Z 0 [Warning] CA certificate ca.pem is self signed.
2018-09-28T04:54:07.457954Z 1 [Note] A temporary password is generated for [email protected]: kq3K=JR8;GqZ

#========================================
mysql_secure_installation -uroot -p"kq3K=JR8;GqZ"
mysql_secure_installation: [Warning] Using a password on the command line interface can be insecure.

Securing the MySQL server deployment.


The existing password for the user account root has expired. Please set a new password.

New password:

Re-enter new password:

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: n
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y

New password:

Re-enter new password:
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n

 ... skipping.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : n

 ... skipping.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

Ответ 13

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

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

Ответ 14

"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