xin*_*xin 7 mysql ubuntu-18.04
我刚刚在 Ubuntu 18.04 上安装了 MySQL(Ver 14.14 Distrib 5.7.22),我发现了一些奇怪的东西:
我安装了 MySQL 并用于mysql_secure_installation
为 root 设置密码,但是只要我使用具有 sudo 权限的任何用户登录到 SSH,我就可以简单地访问 MySQL,而不会提示通过mysql -u root
或 通过mysql -u root -p
并只需单击 ENTER(当询问“输入密码:”)。
这是正常的吗?
我从以前的版本中知道,当我想访问 MySQL 时总是必须输入密码,即使使用 sudo。
joh*_*nes 13
Ubuntu 的 MySQL 包(基于 Debian 的)默认使用该auth_socket
插件。使用此插件从本地计算机连接时不需要密码,但服务器会识别操作系统用户并匹配该用户。因此,如果您是系统上的 root 并登录,您将成为 root。这避免了必须先设置 MySQL root 密码。
另见https://wiki.debian.org/MySql
你应该跑 SHOW GRANTS FOR 'root'@'localhost';
如果它在结果中显示这一行:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION
Run Code Online (Sandbox Code Playgroud)
而不是这一行:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' WITH GRANT OPTION
Run Code Online (Sandbox Code Playgroud)
这意味着 root 用户会通过 unix 套接字凭据自动进行身份验证。如果你不想要这个,你可以发出一个手动 GRANT 命令(不要用脚射击自己)来覆盖之前的命令,例如:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'mysecurepassword' WITH GRANT OPTION;
Run Code Online (Sandbox Code Playgroud)
现在 mysql 会询问密码,但任何能够访问 unix 套接字的用户都可以使用它(因此默认情况下,mysql -u root -p
无需以 root身份使用,但当然知道密码)。您必须考虑哪个更安全。
我不知道为什么mysql_secure_installation
不解释这一点。
归档时间: |
|
查看次数: |
3982 次 |
最近记录: |