我的 MySQL 服务器有许多我没有添加的奇怪用户。这些都是必要的吗?
'root'@'127.0.0.1'
'root'@'localhost'
'root'@'SERVERNAME'
'root'@'::1'
''@'SERVERNAME'
''@'LOCALHOST'
如果我删除除 root@localhost 之外的所有 root 用户,我最终会把自己锁定在数据库之外吗?空用户名有什么用?它们似乎只有“GRANT USAGE”??
127.0.0.1 作为主机和 localhost 之间有区别吗?如果我只有 localhost 而没有 127.0.0.1,这是否意味着使用 TCP/IP 而不是 Unix 套接字的 mysqlclient 将无法连接?
答案1
这些用户似乎是默认用户在安装 MySQL 时添加。建议你运行mysql_secure_安装安装 MySQL 后。
空用户名(''@'SERVERNAME')代表匿名用户。如果您没有运行
mysql_secure_installation
或设置密码,则任何人都可以访问。如果匿名用户有GRANT USAGE
权限,那么基本上意味着它没有权限,但完全删除匿名登录仍然是一个好主意。不,localhost 和 127.0.0.1 之间没有太大区别。无论用户尝试从哪个 IP 地址登录,都必须与
@[IP Address]
用户名的部分匹配。如果您从 MySQL 服务器所在的同一台机器登录,则@localhost
和@127.0.0.1
将匹配。正如 IVlint67 指出的那样,在某些安装中,使用@localhost
不起作用,因此最好使用@127.0.0.1
。
答案2
我通常使用 MySQL 现在附带的 mysql_secure_installation 脚本进行安装...
[电子邮件保护]是 @ IP 地址。root@localhost 是 @ 主机名。服务器名称也是如此。最后一个 root 是 @ localhost 的 IPv6 地址。
来自 MySQL 站点:
尝试连接到主机 127.0.0.1 通常会解析为 localhost 帐户。但是,如果服务器使用 --skip-name-resolve 选项运行,此操作将失败,因此 127.0.0.1 帐户在这种情况下很有用。
空用户名:
有些帐户是为匿名用户准备的。这些帐户的用户名是空的。匿名帐户没有密码,因此任何人都可以使用它们连接到 MySQL 服务器
http://dev.mysql.com/doc/refman/5.0/en/default-privileges.html
最后:
如果我删除除 root@localhost 之外的所有根,我最终会将自己锁定在数据库之外吗?
是的,但你可以回来
请参阅--skip-grant-tables:https://help.ubuntu.com/community/MysqlPasswordReset
我是不是该?
我不在乎,这是你的服务器。如果是我的,我会用密码保护 root 帐户,并删除匿名帐户,除非你需要它们。