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 не пустой и неизвестный.
Исправление:
- mysql -u ВАША-СИСТЕМА-ИМЯ ПОЛЬЗОВАТЕЛЯ -p
- Пароль пуст (нажмите ввод)
- ALTER USER 'root'@'localhost' ИДЕНТИФИЦИРОВАННЫЙ 'NEW-ROOT-PASSWORD';
- ПРИВИЛЕГИИ ПРОМЫВКИ;
Причина:
- Homebrew создаст пользователя с привилегиями root с именем текущего пользователя MacOS.
- у него нет пароля
- Поскольку у него есть все привилегии, просто сбросьте пароль root с этим пользователем.
- Первоначальный пароль для root был сгенерирован случайным образом.
- перейдите к значку яблока -> системные настройки
- открыть Mysql
- в некоторых случаях вы увидите "инициализировать базу данных"
- нажмите на это
- вам будет предложено установить пароль для root -> установите там надежный пароль
- используйте этот пароль для входа в 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.