我正在使用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