Раньше я довольно широко использовал MySQL в Linux, поэтому был вполне уверен, что установка MariaDB (10.0.31) на этом сервере Mint 18.1 (Ubuntu) будет достаточно простой. И установка была именно такой.
Но, как ни странно, теперь он, кажется, знает, когда я прикидываю, кто я. Раньше с MySQL на Redhat, Suse, PCLinixOS ... я мог войти в mysqld, который был настроен с пустым паролем для root @ localhost (то есть с использованием сокета AF_UNIX), утверждая, что я был root, но это не сработало на моем Mint / MariaDB:
symcbean@animal ~ $ mysql -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Но это делает работать, если я "su":
symcbean@animal /etc $ su
Password:
animal etc # mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 47
Server version: 10.0.31-MariaDB-0ubuntu0.16.04.2 Ubuntu 16.04
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> select current_user;
+----------------+
| current_user |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
(то же самое с mysql -u root
, mysql -u root -h localhost
).
У моего пользователя без полномочий root есть разрешения на файл сокета:
symcbean@animal ~ $ ls -l /var/run/mysqld/mysqld.sock
srwxrwxrwx 1 mysql mysql 0 Nov 29 20:46 /var/run/mysqld/mysqld.sock
У моего пользователя root нет ~ / my.conf или ~ / .my.cnf для хранения пароля.
У меня нет привычки запускать небезопасные системы, но меня озадачивает это очевидное изменение поведения. Действительно ли сервер проверяет uid клиента?
MariaDB в Ubuntu 15.10 и более поздних версиях автоматически использует Аутентификация сокета UNIX по умолчанию. Используется UID пользователя, открывающего соединение с локальным сокетом, который может пройти аутентификацию без пароля. Только MariaDB основывается на текущих версиях Debian, а Ubuntu включает это по умолчанию.