Доступ к MySQL запрещен для пользователя 'root' @ 'localhost'

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

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

при попытке mysqladmin -u root -p password я получаю

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

Как получить доступ MySQL на моем сервере Ubuntu 12.04?

34
задан 2 March 2014 в 11:58

7 ответов

Если вы используете n localhost, просто введите следующую команду в терминале:

mysql -u root -p

Если вы используете внешний сервер, также введите IP-адрес хоста (xxx.xxx.xxx.xxx):

mysql -hxxx.xxx.xxx.xxx -uroot -p

You вам будет предложено ввести пароль, введите его, и вы сможете получить доступ к приглашению MySQL.

Вы также можете посмотреть этот ответ о том, как сбросить пароль MySQL.

14
ответ дан 2 March 2014 в 11:58

Установите пароль для mysql

sudo dpkg-reconfigure mysql-server-5.x

Теперь откройте терминал и введите

mysql -uroot -p

введите пароль и нажмите ввод

4
ответ дан 2 March 2014 в 11:58
  • 1
    Спасибо heemays. Это работало бы на терминал гнома, но I' m пытающийся установить рыбу как оболочка по умолчанию для моего пользователя в системе, не для конкретного приложения. На самом деле, I' m заставил только помещать exec fish наверху моего сценария запуска Bash, который будет работать на любой терминал, но это shouldn' t быть необходимым; I' m пытающийся выяснить, как сделать это надлежащий путь. – ohspite 19 August 2015 в 10:51

Я решил свою проблему следующим образом:

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt install mysql-server

Будьте предельно ответственны. С помощью этого решения вы удаляете сервер MySql и все его данные.

5
ответ дан 2 March 2014 в 11:58
  • 1
    @ohspite Ваша оболочка входа в систему установлена на fish, но некоторые приложения могут использовать bash ecxplicitely, необходимо измениться вручную для тех.. также обратите внимание, что существуют различия между входом в систему, и невход в систему окружает anad файлы, которые они читают при запуске.. Ваш вопрос не кажется правильно направленным теперь.. Вы могли разработать где/в, какие приложения у Вас есть проблема с fish? – heemayl 19 August 2015 в 10:56

Я получаю те же симптомы при обновлении, но для меня исправление (после убийства mysql и перезапуска с --skip-grant- таблицы, в которые нужно попасть) - выполнить

update mysql.user set plugin = '';

Процесс обновления любит устанавливать этот столбец в "unix_socket". Я не знаю, чего это должно достичь, но для меня это все ломает.

7
ответ дан 2 March 2014 в 11:58
  • 1
    @muru Это было. И меня перечисляющий все опции, где это может произойти, попытка быть полезным будущим читателям, но также и дымовой завесе, чтобы попытаться покрыть мой смущающий контроль. – ohspite 19 August 2015 в 14:06

После обновления ubuntu 14.4LTS до 16.4LTS пользователь root mysql больше не мог входить в систему из-за неправильной записи в столбце плагина таблицы пользователей mysql. Обновление устанавливает значение подключаемого модуля для пользователя root @ localhost на auth_socket , но правильная запись должна быть mysql_native_password , если вы ранее использовали шифрование паролей mysql.

3
ответ дан 2 March 2014 в 11:58

То же, что и Ульрих Мецгер, после обновления моей машины до Ubuntu 16.04 и Mysql-server-5.7 я не мог войти в систему с правами root, поскольку столбец плагин изменился.

Моя проблема не была решена с помощью sudo dpkg-reconfigure mysql-server-5.7 + удаления + очистки + очистки.

Мне пришлось остановить службу mysql:

# sudo service mysql stop

Затем перезапустите демон mysql с параметром - no-grant-tables :

# sudo mysqld_safe --no-grant-tables &

Затем в другом терминале введите mysql консоль (которая теперь не требует аутентификации) с помощью команды mysql и обновите столбцы пароля и плагина с помощью SQL UPDATE:

UPDATE mysql.user 
  SET authentication_string=PASSWORD(''), 
      plugin='mysql_native_password'
WHERE User='root' AND Host='localhost';

Наконец, завершите команду mysqld_safe , перезапустите mysql и подключитесь к mysql в обычном режиме:

# sudo service mysql start
# mysql
4
ответ дан 2 March 2014 в 11:58
  • 1
    Спасибо за помощь мне сфокусировать вопрос. Я don' t думают, что каждое приложение потребности настраивается независимо; например, man urxvt говорит по умолчанию SHELL, переменная среды будет использоваться. Возможно, более узким вопросом является " почему SHELL не набор к значению в/etc/passwd после входа in" но that' s не мой истинный вопрос, таким образом, я старался избегать проблемы XY. – ohspite 19 August 2015 в 11:54

После полной переустановки mysql (думая, что я использовал неверный пароль) я столкнулся с той же проблемой, но в конце концов нашел комментарий Ивана Блэка выше , который помог:

sudo mysql -u root -p

Я не понимаю, почему мне нужны повышенные привилегии для входа в систему с пользователем root.

0
ответ дан 5 January 2021 в 23:12

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

Похожие вопросы: