Tendo usado anteriormente o MySQL bastante extensivamente no Linux, eu estava bastante confiante de que obter a configuração do MariaDB (10.0.31) nesta caixa Mint 18.1 (Ubuntu) seria bastante fácil. E a instalação foi exatamente isso.
Mas, curiosamente, agora parece saber quando estou mentindo sobre quem sou. Anteriormente com MySQL em Redhat, Suse, PCLinixOS... eu poderia fazer login no mysqld que foi configurado com uma senha em branco para root@localhost (ou seja, usando o soquete AF_UNIX) afirmando que eu era root, mas isso não funcionou no meu Mint /MariaDB:
symcbean@animal ~ $ mysql -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Mas isso funciona se eu '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)
(mesmo com mysql -u root
, mysql -u root -h localhost
).
Meu usuário não root tem permissões no arquivo de soquete:
symcbean@animal ~ $ ls -l /var/run/mysqld/mysqld.sock
srwxrwxrwx 1 mysql mysql 0 Nov 29 20:46 /var/run/mysqld/mysqld.sock
Meu usuário root não tem um ~/my.conf ou ~/.my.cnf para armazenar uma senha.
Não tenho o hábito de executar sistemas inseguros - mas estou intrigado com essa aparente mudança de comportamento. O servidor realmente valida o uid do cliente?
O MariaDB no Ubuntu 15.10 e posterior usa automaticamente a autenticação de soquete UNIX por padrão. O UID do usuário que abre a conexão de soquete local é usado e pode autenticar sem senha. Somente o MariaDB compilado nas versões atuais do Debian e do Ubuntu habilita isso por padrão.