由于之前在 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 默认启用此功能。