需要哪些 MySQL 用户?

Myf*_*wik 13 mysql permissions users

我的 MySQL 服务器有许多我没有添加的奇怪用户。这些都是必须的吗?

'root'@'127.0.0.1'
'root'@'localhost'
'root'@'SERVERNAME'
'root'@'::1'
''@'SERVERNAME'
''@'LOCALHOST'
Run Code Online (Sandbox Code Playgroud)

如果我删除除 root@localhost 之外的所有根,我最终会不会将自己锁定在数据库之外?空用户名的目的是什么?他们似乎只有“GRANT USAGE”??

127.0.0.1 作为主机和本地主机有区别吗?如果我只有 localhost 而不是 127.0.0.1,这是否意味着使用 TCP/IP 而不是 Unix 套接字的 mysqlclient 将无法连接?

ub3*_*t4r 16

  1. 这些用户似乎是安装 MySQL 时添加的默认用户。建议您在安装 MySQL 后运行mysql_secure_installation

  2. 空用户名 (''@'SERVERNAME') 代表匿名用户。如果您没有运行mysql_secure_installation或设置密码,那么任何人都可以访问。如果匿名用户有GRANT USAGE权限,那么基本上就意味着它没有权限,但是完全删除匿名登录仍然是一个好主意。

  3. 不,本地主机和 127.0.0.1 之间没有太大区别。用户尝试登录的任何 IP 地址都必须与@[IP Address]用户名的部分匹配。如果您从 MySQL 服务器所在的同一台机器登录,则@localhost@127.0.0.1将匹配。正如 IVlint67 所指出的那样,在某些安装中,@localhost使用@127.0.0.1.


Dan*_*ick 13

我通常使用 MySQL 随附的 mysql_secure_installation 脚本进行安装...


root@127.0.0.1 是@IP 地址。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 帐户的安全,并删除匿名帐户,除非您需要它们。