我昨天刚刚在新下载的 Ubuntu 上安装了 MariaDB (mysqld)。然后我运行了脚本
/usr/bin/mysql_secure_installation
并设置新的 root 密码并禁用无密码登录。但是这不起作用,所以我尝试从命令行:
root@www:~# mysqladmin password whatever
root@www:~# mysql -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 35
Server version: 10.0.24-MariaDB-7 Ubuntu 16.04
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> \q
Bye
root@www:~#
root@www:~# mysql -uroot -plkasjfdklajsfd
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 38
Server version: 10.0.24-MariaDB-7 Ubuntu 16.04
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mysql]> select Host , User, Password from user;
+-----------+------+-------------------------------------------+
| Host | User | Password |
+-----------+------+-------------------------------------------+
| localhost | root | *90837F291B744BBE86DF95A37D2B2524185DBBF5 |
+-----------+------+-------------------------------------------+
1 row in set (0.00 sec)
为什么 mysql 忽略我的密码更改指令,更糟糕的是,它允许以 root 身份无密码登录?
答案1
一些基于 Debian 的发行版已开始为 root 用户使用 UNIX 套接字身份验证插件。这意味着操作系统帐户链接到数据库 root 帐户,并且只有拥有超级用户权限才能访问数据库。据我所知,这样做是为了让初始安装更安全。
要验证是否确实是 UNIX 套接字身份验证插件导致了此问题,您可以以其他用户身份登录并尝试使用 连接到数据库mysql -uroot
。 如果失败,则您刚刚确认数据库使用了 UNIX 套接字身份验证插件。
默认情况下,mysql
客户端将使用本地 UNIX 域套接字连接到服务器。要使用网络连接,请使用 提供环回地址作为主机名-h 127.0.0.1
。这应该允许您使用显式密码以 root 用户身份进行连接。