Я желаю некоторую помощь в понимании mysql корневая учетная запись, которая соединяется сокетом Unix. Я не понимаю unix_socket очень хорошо. Вход в систему без пароля касается меня, поскольку я могу неправильно понимать, как вход в систему происходит.
Я выполняю сервер Ubuntu 18.04.1 LTS и установленный mysql-сервер Ver 14.14 Distrib 5.7.23. Я выполнил mysql_secure_installation.
Я не могу войти в mysql с паролем вообще.
mysql -u root -p
Я могу войти в mysql, если выполняется как sudo без пароля.
sudo mysql -u root
Я понимаю, что это вызвано тем, что это использует unix_socket вместо mysql_native_password.
non-sudo пользователь может войти в mysql сервер с моей текущей установкой?
non-sudo пользователь может войти в mysql сервер с моей текущей установкой?
Нет. Но любой с физическим доступом к Вашей системе может, когда Вы зарегистрированы в рабочий стол.
Я сам сделал бы a
ALTER USER 'root'@'localhost' IDENTIFIED BY '{password}';
при подсказке mysql. Это вызовет пароль для root@localhost. На Ubuntu можно также сделать
sudo dpkg-reconfigure mysql-server-5.7
(скорректируйте 5.7 к своей версии).
Предполагая, что у вашего корневого пользователя MySQL включена аутентификация unix_socket
, тогда НЕТ ; пользователь без полномочий root и не sudo может НЕ получить доступ к вашей учетной записи root в MySQL.
Если кто-то может получить root-доступ (пользователь Linux) к вашей машине, то он сможет получить доступ к вашей учетной записи root-пользователя MySQL, независимо от того, какой метод аутентификации вы используете. Например. пользователь root может (повторно) запустить MySQL с отключенной аутентификацией и войти в систему без аутентификации вообще.
Таким образом, использование метода аутентификации unix_socket
НЕ делает вашу установку MySQL менее безопасной, а просто более удобной.Фактически можно утверждать, что это делает его более безопасным, потому что независимо от того, как вы настраиваете MySQL, пользователь root может подключаться только через localhost - удаленные подключения пользователя root не разрешены. Обратите внимание, что в этом контексте прямое соединение с localhost считается localhost; например через SSH.
Использование вместо этого пароля (который, кстати, можно сделать, если хотите ), НЕ дает реальных преимуществ. Если, конечно, вы не хотите разрешить пользователю root удаленное подключение ( НЕ рекомендуется ).
Кстати, с включенной аутентификацией unix_socket
из учетной записи root (пользователь Linux) вы можете запустить оболочку MySQL (как пользователь root MySQL, просто запустив:
mysql
AFAIK, который также должен работать с Учетная запись пользователя sudoer тоже. То есть:
sudo mysql