Ubuntu上的多个root用户帐户

我正在使用Ubuntu的12.04,并试图让事情安全。 我还是Linux新手,所以我不太清楚如何解释这个。

我使用mysql -u root -plogin到我的root帐户,然后查看我键入的所有用户SELECT User FROM mysql.user; 其中显示如下

 +------------------+ | User | +------------------+ | root | | root | | | | root | | | | Testing | | debian-sys-maint | | phpmyadmin | | root | +------------------+ 

我login到phpmyadmin查看每个根帐户,并注意到他们都有不同的主机。 本地主机,127.0.0.1,:: 1和另一个IP地址。 是否有必要保留所有这些? 我目前SSH到我的服务器(使用密钥对),然后访问MySQL通过terminal或通过PHPMyadmin直接从我的url,所以我敢肯定,我只是通过本地主机帐户访问它,而不是其他人。

如果我更改我的root密码,所有其他MySQL根帐户都会改变(来自不同的主机)? 在这种情况下你们会做些什么来使它更安全?

这是我正在考虑的,但也许有更好的办法。 我打算将MySQL root用户的密码更改为长时间和随机(并写下来),并创build另一个帐户,使用较短的密码进行日常pipe理。

为了logging,我已经限制IP访问PHPMyAdmin,并作了别名,我只想尽我所能,以防止一些混蛋试图抓住它。

尽pipe它们都被命名为“root”,但MySQL将每个用户条目视为一个唯一的帐户。 该帐户是基于“用户”@“主机”组合。 他们每个人都可以有一个单独的密码,虽然这可能很容易成为帐户pipe理的噩梦。

您有多种方法可以更改帐户的密码,并且根据您的操作方式,您可能需要为每个帐户重复一次以保持同步。

第一种方法(可能是大多数人熟悉的方法)是使用SET PASSWORD

 shell> mysql -u root -p mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd'); mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('newpwd'); mysql> SET PASSWORD FOR 'root'@'::1' = PASSWORD('newpwd'); mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd'); 

如果你想一次更新它们,你可以使用UPDATE

 shell> mysql -u root -p mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd') -> WHERE User = 'root'; mysql> FLUSH PRIVILEGES; 

第三种方法是如何使用mysqladmin工具

 shell> mysqladmin -u root password "newpwd" shell> mysqladmin -u root -h host_name password "newpwd" 

如果使用这种方法,你需要注意:

设置root帐户密码的mysqladmin方法不适用于'root'@'127.0.0.1''root'@'::1'帐户。 使用前面显示的SET PASSWORD方法。

有关MySQL网站的更多信息

我同意你为每天的任务使用一个单独的帐户的想法,你只需要find合适的权限组合,而不会过于沉重。

我还会定期查看您的服务器日志(或者有一个工具)来监视数据库login,例如root用户。

还有更多的事情可以做,以确保您的安装,但很容易超出这个范围。

Ubuntu 12.04中新安装的MySQL显示了这一点。

 mysql>从mysql.user中select用户,主机;
 + ------------------ + ----------- +
 | 用户| 主机|
 + ------------------ + ----------- +
 |  root |  127.0.0.1 |
 |  root |  :: 1 |
 |  |  localhost |
 |  debian-sys-maint |  localhost |
 |  root |  localhost |
 |  |  myserver |
 |  root |  myserver |
 + ------------------ + ----------- +

127.0.0.1, ::1, localhost, myserver(server hostname)是默认设置的。 这些条目几乎与::1是IPV6相当于localhost ,所以通常它们是安全的。

所以基本上,这些条目说你允许这些主机以root身份连接到MySQL。 在你的情况下,你也允许another IP address作为根连接到你的MySQL。 如果没有从该IP地址连接到MySQL的脚本或应用程序,则可能需要删除该条目。

您仍然有一个root帐户,所以更改密码将反映到所有连接,无论主机。

你也可以运行这个非常有用的命令来保护你的MySQL服务器。

  sudo mysql_secure_installation