Mariadb 的意外身份验证

Mariadb 的意外身份验证

由于之前在 Linux 上广泛使用过 MySQL,我非常有信心在这个 Mint 18.1 (Ubuntu) 机器上安装 MariaDB (10.0.31) 会很容易。安装过程就是这样。

但奇怪的是,现在它似乎知道我什么时候在撒谎。以前在 Redhat、Suse、PCLinixOS 上使用 MySQL... 我可以通过断言我是 root 来登录配置了 root@localhost 空密码的 mysqld(即使用 AF_UNIX 套接字),但这在我的 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

我的根用户没有 ~/my.conf 或 ~/.my.cnf 来保存密码。

我没有运行不安全系统的习惯 - 但这种明显的行为变化让我感到困惑。服务器真的会验证客户端的 uid 吗?

答案1

Ubuntu 15.10 及更高版本上的 MariaDB 自动使用UNIX 套接字身份验证默认情况下。使用打开本地套接字连接的用户的 UID,无需密码即可进行身份验证。只有当前版本的 Debian 和 Ubuntu 上的 MariaDB 默认启用此功能。

相关内容