哪些MySQL用户是必要的?

我的MySQL服务器有一些奇怪的用户,我没有添加。 这些都是必要的吗?

'root'@'127.0.0.1' 'root'@'localhost' 'root'@'SERVERNAME' 'root'@'::1' ''@'SERVERNAME' ''@'LOCALHOST' 

如果我删除root @ localhost之外的所有root,是否可以将自己locking在数据库之外? 而空的用户名的目的是什么? 他们似乎只有“授权使用”?

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

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

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

  3. 不,localhost和127.0.0.1之间没有太大的区别。 用户尝试login的@[IP Address]必须与用户名的@[IP Address]部分相匹配。 如果您从同一台机器loginMySQL服务器,则@localhost@127.0.0.1将匹配。 正如IVlint67所指出的那样,在一些安装了@localhost无法正常工作,所以最好使用@127.0.0.1

我通常使用mysql_secure_installation脚本安装MySQL现在正在运行…


[email protected]是@ IP地址。 root @ localhost是@ hostname。 同上的服务器名称。 最后一个根是@ localhost的IPv6地址。


从MySQL网站:

尝试连接到主机127.0.0.1通常parsing为本地主机帐户。 但是,如果使用–skip-name-resolve选项运行服务器,则会失败,因此127.0.0.1帐户在这种情况下非常有用。

空的用户名:

有些帐户是匿名用户。 这些用户名是空的。 匿名帐户没有密码,所以任何人都可以使用它们连接到MySQL服务器

http://dev.mysql.com/doc/refman/5.0/en/default-privileges.html


最后:

如果我删除root @ localhost之外的所有root,是否可以将自己locking在数据库之外?

是的,但是你可以回来

请参阅–skip-grant-tables: https : //help.ubuntu.com/community/MysqlPasswordReset

我是不是该?

我不在乎,这是你的服务器。 如果是我的,我会保护root帐户的密码,并删除匿名帐户,除非你需要它们。