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

24

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

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

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

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

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

user253867
источник
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.

Parto
источник
я вошел, но я все еще не знаю, как изменить или выбрать пароль
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". Я не знаю, что это должно сделать, но для меня это все ломает.

dogtato
источник
Это решит мою проблему на 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
Kuuak
источник
2

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

Ульрих Метцгер
источник
Это тот, который работал для меня, и, кажется, корень проблемы. Деинсталляция и переустановка ничего не решит.
SteveFromAccounting