通过全新(但旧)安装 Ubuntu 和 MySQL,我发现我可以通过命令行客户端访问 MySQL 而无需输入任何用户或密码。
mysql
这种默认情况让我很困扰,我试图调查一下。以 root 身份登录需要 root 密码。但如果不指定用户(即仅在命令行中输入)登录,则不会要求我输入用户名和密码。
我想我已经追踪到用户了debian-sys-maint
,一方面该用户似乎拥有完全的 MySQL 权限,/etc/mysql/debian.cnf
另一方面该用户也是 中定义的默认客户端用户。
我的第一反应是完全摆脱该用户,因为这对我来说似乎是一个安全漏洞,但读完包括下面链接的帖子后,似乎有debian-sys-maint
必要这样做。
所以我的计划是尝试以下操作:
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'debian-sys-maint';
GRANT RELOAD on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'xxxxxx';
FLUSH PRIVILEGES;
有人可以评论这是保护默认 MySQL 安装的推荐/预期/正确的方法吗?
我是否也应该修改/etc/mysql/debian.cnf
以删除此部分?
[client]
host = localhost
user = debian-sys-maint
password = xxxxxx
socket = /var/run/mysqld/mysqld.sock
(它确实发出警告# Automatically generated for Debian scripts. DO NOT TOUCH!
:)
无论如何,我打算用我自己的~/.my.cnf
客户部分来替换它。
更新: 的权限/etc/mysql/debian.cnf
为:
-rw------- 1 root root 312 2012-05-20 23:07 /etc/mysql/debian.cnf
参考:
答案1
答案是,这个debian-sys-maint
说法不过是转移注意力的幌子。
我所观察的现象是 MySQL“匿名”用户。
这两个问题以及我昨天发布的问题回答了这个问题: