MacOSX доморощенный пароль mysql root

По какой-то причине MySQL перестал предоставлять доступ для root. Деинсталлировано и переустановлено с помощью Homebrew. Свежая установка, свежие таблицы, но когда я вхожу

mysql -u root -p

Я получаю эту ошибку:

Доступ запрещен для пользователя 'root'@'localhost' (используется пароль: НЕТ)

Я переустанавливал MySQL пять раз, но он все еще запрашивает пароль. Как это исправить?

27 ответов

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

$ brew services stop mysql
$ pkill mysqld
$ rm -rf /usr/local/var/mysql/ # NOTE: this will delete your existing database!!!
$ brew postinstall mysql
$ brew services restart mysql
$ mysql -uroot

все заслуги @Ghrua

Просто запустите эту команду (где NEWPASS - ваш пароль):

$(brew --prefix mysql)/bin/mysqladmin -u root password NEWPASS

У меня была такая же ошибка, и я исправил ее таким образом.

В случае, если вы случайно установили и забыли пароль root, и вы не хотите стереть все свои базы данных и начать заново, потому что вам лень и вы забыли иметь решение для резервного копирования на месте, и вы используете довольно свежую установку Homebrew (Зима 2013), здесь приведены шаги для сброса пароля для MySQL.

Остановите текущий запущенный экземпляр MySQL

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

Теперь запустите mysql вручную, пропустив таблицы грантов и сеть

$(brew --prefix mysql)/bin/mysqld_safe --skip-grant-tables --skip-networking

Обратите внимание, что если вы запускаете echo $(brew --prefix mysql) и он не отвечает как "/usr/local/opt/mysql" в bash, вам необходимо соответствующим образом изменить путь.

После того, как вы это сделали, у вас должен быть запущенный незащищенный экземпляр MySQL.

Войдите и установите пароль

mysql -u root

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

mysql> update mysql.user set password=PASSWORD('new_password_here') WHERE user='root';

Если все пошло по плану, он должен сказать:

Query OK, 1 row affected (0.02 sec)
Rows matched: 4  Changed: 1  Warnings: 0

Выход из приглашения MySQL.

mysql> exit
Bye

Остановить сервер:

mysqladmin -u root shutdown

Теперь давайте вернем демон запуска, чтобы у нас снова был готов MySQL:

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

Поздравляю. Вы только что сбросили свой пароль root для mysql. Залейте себе кофе и получите решение для резервного копирования на месте!

У меня была такая же проблема пару дней назад. Бывает при установке mysql с помощью homebrew и запустить скрипт инициализации (mysql_install_db) перед началом mysql демон.

Чтобы исправить это, вы можете удалить mysql файлы данных, перезапустите службу и затем запустите сценарий инициализации:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
rm -r /usr/local/var/mysql/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

Получил эту ошибку после установки mysql через домашний кофе.

Поэтому сначала удалите установку. Затем переустановите через Homebrew

brew update
brew doctor
brew install mysql

Затем перезапустите службу MySQL

 mysql.server restart

Затем запустите эту команду, чтобы установить новый пароль пользователя root.

 mysql_secure_installation

Наконец он попросит перезагрузить привилегии. Скажи да. Затем снова войдите в MySQL. И используйте новый пароль, который вы установили.

mysql -u root -p

Если ты бежишь

brew install mariadb
...
brew services start mariadb
==> Successfully started `mariadb` (label: homebrew.mxcl.mariadb)

 $(brew --prefix mariadb)/bin/mysqladmin -u root password newpass
/usr/local/opt/mariadb/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost''

также не удается войти в систему с учетной записью root:

mariadb -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

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

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

mariadb -u johnsmit
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.4.11-MariaDB Homebrew

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit
Bye

Поскольку вопрос был задан / отвечен давным-давно, эти главные ответы мне не подходят. Вот мое решение в 2020 году.

Предыстория: свежий mysql/mariadb, установленный homebrew.

Проблема: пароль для root не пустой и неизвестный.

Исправление:

  1. mysql -u ВАША-СИСТЕМА-ИМЯ ПОЛЬЗОВАТЕЛЯ -p
  2. Пароль пуст (нажмите ввод)
  3. ALTER USER 'root'@'localhost' ИДЕНТИФИЦИРОВАННЫЙ 'NEW-ROOT-PASSWORD';
  4. ПРИВИЛЕГИИ ПРОМЫВКИ;

Причина:

  1. Homebrew создаст пользователя с привилегиями root с именем текущего пользователя MacOS.
  2. у него нет пароля
  3. Поскольку у него есть все привилегии, просто сбросьте пароль root с этим пользователем.
  4. Первоначальный пароль для root был сгенерирован случайным образом.

Это сработало для меня:

sudo mysql -u root
  1. перейдите к значку яблока -> системные настройки
  2. открыть Mysql
  3. в некоторых случаях вы увидите "инициализировать базу данных"
  4. нажмите на это
  5. вам будет предложено установить пароль для root -> установите там надежный пароль
  6. используйте этот пароль для входа в mysql в следующий раз

Надеюсь это поможет.

Попробуйте с sudo чтобы избежать ошибки "Доступ запрещен":

sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS

Если вы используете macOS и устанавливаете MariaDB через Homebrew, вы можете использовать пароль root ОС, а затем сбросить пароль, как хотите, в этом случае я удалил пароль root:

      sudo mysqladmin -u root password ''

или если вы хотите установить пароль, вы можете поместить пароль между одиночными кавычками:

      sudo mysqladmin -u root password 'NEW-PASSWORD-HERE'

Я только что заметил что-то общее для большинства ответов здесь и подтвердил мою новую установку. Это на самом деле очевидно, если вы посмотрите на рекомендации для запуска mysqladmin -u root без -p,

Там нет пароля.

Brew устанавливает mysql только с пользователем root и вообще без пароля. Это имеет смысл, я думаю, но Caveats после установки вообще не упоминают об этом.

У меня была эта проблема при новой установке на Mac. Я установил MariaDB с помощью:

brew install mariadb 

Затем запустил сервис:

brew services start mariadb

Мне не удалось запустить mysql_secure_installation, поскольку он запрашивал пароль root. Затем я заметил в выводе установки:

mysql_install_db --verbose --user=jonny --basedir=/usr/local/Cellar/ ....

Поэтому я попытался войти в систему под именем пользователя, указанным в выводе mysql_install_db, и был успешным, например

mysql -u jonny

Затем в приглашении mysql, если вы хотите установить пароль для пользователя root:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('ToPsEcReT');

Это сработало для меня. Надеюсь, это сработает и для вас!!! Следуйте за ними.

brew services stop mysql
pkill mysqld
# NB: the following command will REMOVE all your databases!
# Make sure you have backups or SQL dumps if you have important data in them already.
rm -rf /usr/local/var/mysql/
brew services restart mysql

mysql -uroot
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

mysql -u root 
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password 
BY'YOUR_PASS_WORD!!!!';

Для меня это работало для MAC https://flipdazed.github.io/blog/osx%20maintenance/set-up-mysql-osx

Запустите mysql, запустив

Заваривать услуги запуска MySQL

Запустите установочный скрипт

mysql_secure_installation

Вам будет предложено настроить плагин VALIDATE PASSWORD. Введите y, чтобы сделать это.

Выберите необходимую проверку пароля (не имеет значения, используете ли вы только базу данных)

Теперь выберите y для всех оставшихся вариантов: Удалить еще раз. пользователей; запретить удаленный вход в систему; удалить тестовую базу данных; перезагрузить таблицы привилегий. Теперь вы должны получить сообщение

All done!

Убедитесь, что у вас нет.my.cnf в вашем домашнем каталоге. Это была моя проблема.

Так что, если у кого-то такая же ситуация и конфигурация, что и у меня, и он тоже вот-вот сойдет с ума - это сработало для меня.

После долгой истории, которую я имел варочный установленный MariaDB, которая хранится автоматическим перезапуск, когда я убил свой процесс (это варево делает), которые имели корневой пароль, который я не знаю.

$ brew services list

Это показывает что-то вроде:

mariadb started jdoe /path/to/homebrew.mxcl.mariadb.plist

Остановите сервер MySQL с помощью:

$ brew services stop mariadb

Затем запустите его снова без пользователя root (и без использования brew):

$ mariadbd --skip-grant-tables &

Вот, mysql_secure_installation у меня не сработало из-за --skip-grant-tables, и он не работал бы без --skip-grant-tablesпотому что ему нужен пароль (которого у меня не было).
Пытаюсь$(brew --prefix mysql)/bin/mysqladmin -u root password hunter2 только возвращал странные ошибки и ничего не делал; $(brew --prefix mariadb)/bin/mysqladmin -u root password hunter2 также не работал, выдавал разные ошибки и предложения, которые не сработали для меня.

Но теперь вы можете войти в mysql без учетных данных:$ mysql

Здесь старый метод обновления таблицы пользователей для root не работает, потому что "Столбец" Пароль "не обновляется".
Новый метод используетalter userНО работает только после того, как вы сделалиflush privileges;так что сделайте это в первую очередь.
Потом:
MariaDB [(none)]> alter user 'root'@'localhost' identified by 'hunter2';
(MariaDB [(none)]>это приглашение MySQL здесь)
Затем выполнитеflush privileges;еще раз.
Закройте клиент MySQL.

Что касается brew, MariaDB все еще не работает, поэтому используйте $ ps aux | grep -i mariadb найти пид и $ kill -9 <pid>Это.
Затем используйте$ brew services start mariadb чтобы начать заново.

Пароль по умолчанию при установке mysql через brew - root, попробуйте это, у меня получилось

mysql -uroot -proot

Запуск этих линий в терминале помог мне и нескольким другим, у которых была такая же проблема. Эти инструкции перечислены в терминале после того, как brew успешно установил mysql.

mkdir -p ~/Library/LaunchAgents

cp /usr/local/Cellar/mysql/5.5.25a/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/

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

/usr/local/Cellar/mysql/5.5.25a/bin/mysqladmin -u root password 'YOURPASSWORD'

где YOURPASSWORD пароль для пользователя root

Я тоже наткнулся на это, и решением было просто запустить это:

mysql

Следил за статьей @Roman Escart. Я предполагаю, что ключ в том, чтобы использовать '$brew link --force mysql@5.7'https://medium.com/macoclock/setup-mysql-in-a-specific-version-on-macos-35d8ad89c699

Терминал 1:

$ mysql_safe

Терминал 2:

$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

Я использую Каталину и использую это mysql_secure_installation команда и теперь работает у меня:

$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): << enter root here >>

Я вхожу root как текущий пароль

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

а остальное сделай

Для меня mysql был настроен с пользователем root и без пароля. Я хотел иметь возможность войти в систему как мой текущий пользователь и не требовать -u rootнемного. Я использовал следующую команду для настройки суперпользователя:

      mysql -u root -e "CREATE USER '$USER'@'localhost';"
mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO '$USER'@'localhost';"
mysql -u root -e "flush privileges;"

Любое значение для $USERбудет работать. Я лично объединил все вышеперечисленное через точку с запятой, но переформатировал, чтобы, надеюсь, всем было легче читать.

войти в БД как root:

      sudo mysql -u root

вы можете запустить безопасную базу данных как:

      sudo mysql_secure_installation

Используйте файл инициализации, чтобы запустить mysql, чтобы изменить пароль root.

brew services stop mysql
pkill mysqld
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'newRootPass';" > /tmp/mysql-init
$(brew --prefix mysql)/bin/mysqld --init-file=/tmp/mysql-init

Ваш пароль root теперь изменен. Обязательно завершите работу сервера, чтобы сохранить изменение пароля. В новом окне терминала выполнить

mysqladmin -u root -p shutdown

и введите свой новый пропуск.

Запустите службу и удалите файл инициализации

brew services start mysql
rm /tmp/mysql-init

Проверено на mysql версии 8.0.19

Как проще всего запустить Mysql на Mac?

Моим решением было установить MAMP.

https://www.mamp.info/en/mac/

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