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


24

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

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

когда я пытаюсь mysqladmin -u root -p passwordполучить

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

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


1
Старайтесь не вводить свой пароль в качестве параметра в командной строке, другие пользователи могут найти его в списках процессов. Гораздо лучше ввести его прямо в программу или использовать ключ
Amias

Синтаксис -p passwordнеправильный, это должно быть, -ppasswordно не рекомендуется. Дополнительная информация: stackoverflow.com/questions/5131931/…
Melebius

Проверьте эту страницу на возможные причины этой ошибки и обходные пути, чтобы исправить эту ошибку. rathishkumar.in/2017/04/… . Это может помочь вам.
rathishDBA

Ответы:


12

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

mysql -u root -p

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

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

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

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


я вошел, но я все еще не знаю, как изменить или выбрать пароль
user253867

В ответе, на который я ссылаюсь, вы должны заменить 5.xв конце версию сервера MySQL, которую вы используете. Я использую 5.5, поэтому моя команда будетsudo dpkg-reconfigure mysql-server-5.5
Parto

9
Итак, проблема в том, что OP видит Access denied for user 'root'@'localhost'. Вы предлагаете позвонить mysql -u root -p. Результат этой команды: Access denied for user 'root'@'localhost'.
phil294

5
sudo mysql -u root -pу меня работает, но mysql -u root -pнет
Иван Блэк

7

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

update mysql.user set plugin = '';

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


Это решит мою проблему на Ubuntu 16 LTS, после того, как попробовал все .. разрешения, группа пользователей. Thanx.
Оналби

да, я запустил сценарий усиления безопасности, и он изменил плагин, mysql_socketчтобы все, что я использовал PASSWORD('xxxxxx'), не работало.
TheVillageIdiot

4

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

sudo dpkg-reconfigure mysql-server-5.x

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

mysql -uroot -p

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


4

Я решил мою проблему с этим:

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 и все его данные.


Не работает для меня
Иван Блэк

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

4

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

Моя проблема не была решена с помощью 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

2

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


Это тот, который работал для меня, и, кажется, корень проблемы. Деинсталляция и переустановка ничего не решит.
SteveFromAccounting
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.