когда я установил сервер 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
Причина в том, что недавняя установка 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
Я думаю, вы должны использовать authentication_string
вместо Password
.
FLUSH PRIVILEGES
на MySQL терминале?