使初始MySQL账户安全 为匿名账户指定密码或删掉匿名账户
要想为匿名账户指定密码,可以使用SET PASSWORD或UPDATE。在两种情况中,一定要使用PASSWORD()函数为密码加密。
在Windows中使用PASSWORD的方法:
1 |
shell> <strong>mysql -u root</strong> |
1 |
mysql> <strong>SET PASSWORD FOR ''@'localhost' = PASSWORD('<em>newpwd</em>');</strong> |
1 |
mysql> <strong>SET PASSWORD FOR ''@'%' = PASSWORD('<em>newpwd</em>');</strong> |
在Unix中使用PASSWORD的方法:
1 |
shell> <strong>mysql -u root</strong> |
1 |
mysql> <strong>SET PASSWORD FOR ''@'localhost' = PASSWORD('<em>newpwd</em>');</strong> |
1 |
mysql> <strong>SET PASSWORD FOR ''@'<em>host_name</em>' = PASSWORD('<em>newpwd</em>');</strong> |
用服务器主机名替换第二个SET PASSWORD语句中的host_name。这是指定的user表中的root non-localhost记录的Host列名。如果你不知道是哪个主机名,在SET PASSWORD之前执行下面的语句:
1 |
mysql> <strong>SELECT Host, User FROM mysql.user;</strong> |
查找在User列有root和在Host列没有localhost的记录。然后在第二个SET PASSWORD语句中使用该Host值。
为匿名账户指定密码的另一种方法是使用UPDATE直接修改用户表。用root连接服务器,运行UPDATE语句为相应user表记录的Password列指定一个值。在Windows和Unix中的过程是相同的。下面的UPDATE语句同时为两个匿名账户指定密码:
1 |
shell> <strong>mysql -u root</strong> |
1 |
mysql> <strong>UPDATE mysql.user SET Password = PASSWORD('<em>newpwd</em>')</strong> |
1 |
-> <strong>WHERE User = '';</strong> |
1 |
mysql> <strong>FLUSH PRIVILEGES;</strong> |
在user表中直接使用UPDATE更新密码后,必须让服务器用FLUSH PRIVILEGES重新读授权表。否则,重新启动服务器前,不会使用更改。
如果你宁愿删除匿名账户,操作方法是:
1 |
shell> <strong>mysql -u root</strong> |
1 |
mysql> <strong>DELETE FROM mysql.user WHERE User = '';</strong> |
1 |
mysql> <strong>FLUSH PRIVILEGES;</strong> |
可以在Windows和Unix中使用DELETE语句。在Windows中,如果你只想删掉具有与root相同权限的匿名账户,方法为:
1 |
shell> <strong>mysql -u root</strong> |
1 |
mysql> <strong>DELETE FROM mysql.user WHERE Host='localhost' AND User='';</strong> |
1 |
mysql> <strong>FLUSH PRIVILEGES;</strong> |
该账户允许匿名访问,但是拥有全部的权限,因此删掉它可以提高安全。