#mysql #homebrew #access-denied
#mysql #homebrew #доступ запрещен
Вопрос:
Я застрял на этом в течение нескольких дней. У меня есть предварительная установка mysql. Что работает для меня, чтобы попасть в mysql..
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
$(brew --prefix mysql)/bin/mysqld_safe --skip-grant-tables --skip-networking
mysql -u root // or just mysql
Итак, теперь я в деле. Я успешно изменил пароль для ‘root’@’localhost’ в соответствии с результатами этого запроса..
mysql> select host, user, authentication_string from user;
----------- ------------------ ------------------------------------------------------------------------
| host | user | authentication_string |
----------- ------------------ ------------------------------------------------------------------------
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root | pissword |
----------- ------------------ ------------------------------------------------------------------------
4 rows in set (0.00 sec)
Однако я по-прежнему не могу получить доступ к mysql после выхода из этого процесса и нормального запуска сервера..
mysqladmin -u root shutdown
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
mysql -u root -ppissword
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Может быть, я могу проверить журналы или что-то, чего я не знаю. Пожалуйста, помогите.
Ответ №1:
Я думаю, что проблема в том, как вы изменили пароль. Правильный синтаксис для этого
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypass');
Не забудьте сбросить привилегии после этого:
FLUSH PRIVILEGES;
Дело в том, что в authentication_string
столбце у вас будет хэш пароля, а не исходный пароль. Это то, что делает PASSWORD
функция.
Комментарии:
1. Я использую mysql server 5.7.24, так что синтаксис должен быть правильным, согласно документам , но я получаю синтаксическую ошибку.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'PASSWORD('MyNewPass')'
Я также сбросил привилегии. Какая разница, как я изменил пароль?2. В вашем сообщении вы показываете результат запроса. В столбце authentication_string значением в корневой строке является ‘pissword’. Похоже, вы изменили значение непосредственно в столбце. Функция PASSWORD создала хэш пароля, и это значение должно быть внутри таблицы user. Пароль никогда не записывается в виде обычного текста.
3. Я не смог выполнить это или любое подобное утверждение без получения синтаксической ошибки. С моей стороны это может быть проблемой с установленными различными версиями mysql и переменными path и т.д. Я удалил mysql настолько полностью, насколько мог, и переустановил mysql. Теперь я могу получить доступ к root без пароля, поскольку по умолчанию none не установлен. Спасибо