Ubuntu 上 mysql 的多个 root 用户帐户

Ubuntu 上 mysql 的多个 root 用户帐户

我正在使用 ubuntu 12.04 并尝试确保安全。我对 Linux 还很陌生,所以我不太清楚如何解释这一点。

我使用登录到我的根帐户mysql -u root -p,然后查看我输入的所有用户, SELECT User FROM mysql.user;结果显示以下内容

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

我登录 phpmyadmin 查看每个根帐户的用途,发现它们都有不同的主机。Localhost、127.0.0.1、::1 和另一个 IP 地址。有必要保留所有这些吗?我目前通过 SSH 进入我的服务器(使用密钥对),然后通过终端或直接从我的 URL 通过 PHPMyadmin 访问 MySQL,所以我很确定我只是通过 localhost 根帐户访问它,而不是其他任何帐户。

如果我更改了 root 密码,所有其他 MySQL root 帐户是否也会更改(来自不同主机)?在这种情况下,你们会怎么做才能使其更安全?

这是我打算做的,但也许还有更好的方法。我打算将 MySQL 根用户的密码更改为较长且随机的密码(并写下来),然后创建另一个密码较短的帐户用于日常管理。

为了记录在案,我已经限制了 PHPMyAdmin 的 IP 访问并创建了一个别名,我只是想尽一切努力阻止某些混蛋试图掌握它。

答案1

尽管它们都名为“root”,但 MySQL 将每个用户条目视为一个唯一帐户。帐户基于“用户”@“主机”组合。它们中的每一个有一个单独的密码,尽管这很容易成为帐户管理的噩梦。

您可以通过多种方式更改帐户的密码,并且根据您的操作方式,您可能需要对每个帐户重复此操作以保持它们同步。

第一种方法(可能是大多数人都熟悉的)是使用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"

如果使用此方法,需要注意:

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

更多信息MySQL 站点

我同意您使用单独帐户来处理日常任务的想法,您只需要找到适合您需要的正确权限组合,而不要太过分。

我还会定期查看您的服务器日志(或使用工具)来监控数据库登录,例如 root 用户的登录。

您可以做很多事情来确保您的安装的安全,但这很容易超出此范围。

答案2

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

mysql>从 mysql.user 中选择用户、主机;
+------------------+-----------------------+
| 用户 | 主机 |
+------------------+-----------------------+
| 根 | 127.0.0.1 |
| 根 | ::1 |
| | 本地主机|
| debian-sys-maint | 本地主机 |
| 根 | 本地主机 |
| | 我的服务器 |
| 根目录 | 我的服务器 |
+------------------+-----------------------+

127.0.0.1, ::1, localhost, myserver(server hostname)是默认设置的。这些条目实际上与::1的 IPV6 等效localhost,因此一般来说是安全的。

因此,基本上,这些条目表示您允许这些主机以 身份连接到 MySQL root。 在您的例子中,您还允许another IP address以 root 身份连接到您的 MySQL。 如果没有脚本或应用程序从该 IP 地址连接到 MySQL,您可能需要删除该条目。

您仍然有一个根帐户,因此更改密码将反映到所有连接,无论主机如何。

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

sudo mysql_secure_installation

相关内容