以前在 Linux 上广泛使用过 MySQL,我相当有信心在这个 Mint 18.1 (Ubuntu) 机器上安装 MariaDB (10.0.31) 会很容易。安装就是这样。
但奇怪的是,它现在似乎知道我什么时候在撒谎。以前在 Redhat、Suse、PCLinixOS 上使用 MySQL ......我可以通过断言我是 root 登录到配置了 root@localhost 的空白密码(即使用 AF_UNIX 套接字)的 mysqld,但这在我的 Mint 上不起作用/玛丽亚数据库:
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吗?
Ubuntu 15.10 及更高版本上的 MariaDB 默认自动使用UNIX 套接字身份验证。使用打开本地套接字连接的用户的 UID,无需密码即可进行身份验证。默认情况下,只有基于当前版本的 Debian 和 Ubuntu 构建的 MariaDB 才启用此功能。