我使用MysqL -u root -p登录到我的root帐户,然后查看我输入的所有用户SELECT User FROM MysqL.user;其中显示以下内容
+------------------+ | User | +------------------+ | root | | root | | | | root | | | | Testing | | debian-sys-maint | | PHPmyadmin | | root | +------------------+
我登录PHPmyadmin查看每个root帐户的内容,并注意到它们都有不同的主机. Localhost,127.0.0.1,:: 1和另一个IP地址.是否有必要保留所有这些?我目前通过SSH进入我的服务器(使用密钥对)然后通过终端或通过PHPMyadmin直接从我的URL访问MysqL,所以我很确定我只是通过localhost root帐户访问它而不是其他任何一个.
如果我更改我的root密码,所有其他MysqL根帐户都会更改(来自不同的主机)?在这种情况下你们会做些什么来使它更安全?
这就是我在想的事情,但也许有更好的方法.我打算将MysqL root用户的密码更改为长而随机的(并将其写下来),并使用较短的密码创建另一个帐户以进行日常管理.
为了记录,我已经限制了对PHPMyAdmin的IP访问并创建了一个别名,我只想尽我所能阻止一些混蛋试图抓住它.
解决方法
您可以通过多种方式更改帐户的密码,并且根据您的操作方式,您可能需要为每个帐户重复这些密码以使其保持同步.
第一种方式(可能是大多数人都熟悉的方法)是使用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;
shell> MysqLadmin -u root password "newpwd" shell> MysqLadmin -u root -h host_name password "newpwd"
如果使用此方法,您需要注意:
The
MysqLadmin
method of setting theroot
account passwords does not work for the'root'@'127.0.0.1'
or'root'@'::1'
account. Use theSET PASSWORD
method shown earlier.
有关MySQL site的更多信息
我同意您在日常任务中使用单独帐户的想法,您只需要找到适合您想要的权限的正确组合,而不会过于沉重.
我还会定期查看您的服务器日志(或者有一个工具)来监视数据库登录,例如root用户登录.
您可以采取更多措施来保护您的安装,但这很容易超出此范围.