如何更改[email protected][email protected]的密码

我正在看我的mysql.user表中的用户,并注意到有3个根。

root@localhost [email protected] [email protected] 

当我第一次发现这个根没有密码保护。 我设法密码保护根@本地主机,但我无法弄清楚如何密码保护另外两个。 我将如何通过命令行来做到这一点?

谢谢你的帮助。

SQL查询:

 update user set password=PASSWORD("NEWPASSWORD") where User='root' AND Host="127.0.0.1"; update user set password=PASSWORD("NEWPASSWORD") where User='root' AND Host="example.com"; 

我有三(3)个预防措施。 请记住以下几点:

注意事项1)更新mysql.user后,一定要运行FLUSH PRIVILEGES。 否则,直到下次重新启动mysql为止,更改才会生效。

注意事项2)如果您打开了二进制日志logging,请禁用会话中的二进制日志logging。 否则,mysql密码将在二进制日志中可见。 别担心,所有其他数据库连接都会启用二进制日志logging。

SET sql_log_bin = 0;
更新用户设置密码= PASSWORD(“NEWPASSWORD”)其中User ='root'AND Host =“127.0.0.1”;
更新用户设置密码=密码(“NEWPASSWORD”)其中用户=“根”和主机=“example.com”;
FLUSH PRIVILEGES;

注意事项3)在Linux版本的mysql中,文件/root/.mysql_historylogging你的会话types。 密码也是可见的。 使用vi编辑您的更改。

所以为了不用担心closures二进制日志来隐藏密码,这是我通常做的:

我有我的Windows桌面上运行的MySQL。 我在Windows的MySQL中运行以下代码:

lwdba @ localhost(DB information_schema):: select password('NEWPASSWORD');
+ ——————————————- +
| 密码('NEWPASSWORD')|
+ ——————————————- +
| * B845F78DCA29B8AE945AB9CFFAC24A9D17EB5063 |
+ ——————————————- +
一排(0.00秒)

现在,在MySQL for Linux中运行:

SET sql_log_bin = 0;
更新用户设置密码='* B845F78DCA29B8AE945AB9CFFAC24A9D17EB5063'其中User ='root'AND Host =“127.0.0.1”;
更新用户设置密码='* B845F78DCA29B8AE945AB9CFFAC24A9D17EB5063'其中User ='root'AND Host =“example.com”;
FLUSH PRIVILEGES;

三个原因为什么这是更有利的:

  1. 这更安全。 明文forms的密码永远不会出现在Linux的任何地方。
  2. 您没有禁用二进制日志logging。
  3. 虽然会在二进制日志中看到,但是谁能理解MD5的encryption输出?