не могу войти в mysql Ubuntu 18.04

0

когда я установил сервер mysql в машину ubuntu, используя эту команду

sudo apt-get install mysql-client mysql-server 

команда выполняется успешно, но во время установки mysql не спрашивал меня о пароле, поэтому я не могу войти в mysql, кроме как пользователь root, другими словами, если я пишу в командной строке эту команду

sudo mysql -uroot -p

Я могу войти в mysql, даже если я каждый раз меняю пароль, сервер не имеет значения, если я использовал sudo. так как я могу решить эту проблему (установить новый пароль) при входе в mysql Я попытался сменить пароль из таблицы mysql.user, используя этот запрос

mysql> UPDATE mysql.user SET Password= PASSWORD('rootroot') WHERE User = 'root';

но столбец "Пароль" не указан в таблице mysql.user

Теги:

2 ответа

0

Причина в том, что недавняя установка Ubuntu (может быть, и другие), mysql использует по умолчанию плагин UNIX auth_socket.

В основном это означает, что: db_users, использующие его, будут "auth" с помощью системных пользователей. Вы можете узнать, настроен ли ваш пользователь root следующим образом:

$ sudo mysql -u root # I had to use "sudo" since is new installation

  mysql> USE mysql;
  mysql> SELECT User, Host, plugin FROM mysql.user;

   +------------------+-----------------------+
   | User             | plugin                |
   +------------------+-----------------------+
   | root             | auth_socket           |
   | mysql.sys        | mysql_native_password |
   | debian-sys-maint | mysql_native_password |
   +------------------+-----------------------+

Как вы можете видеть в запросе, пользователь root использует плагин auth_socket

Есть два способа решить эту проблему:

Пользователь root может использовать плагин mysql_native_password. Вы можете создать новый db_user с помощью system_user (рекомендуется). Вариант 1:

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
 mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

 $ service mysql restart
0

Я думаю, вы должны использовать authentication_string вместо Password.

  • 0
    Я использовал его и установил authentication_string, но когда я пытаюсь войти в систему, используя новый пароль mysql -uroot -prootroot, у меня появляется эта ошибка ОШИБКА 1698 (28000): доступ запрещен для пользователя 'root' @ 'localhost'
  • 0
    Вы запускали FLUSH PRIVILEGES на MySQL терминале?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню