设置了root密码后,为什么MYSQL仍然允许我不用密码登录?


10

设置了root密码后,为什么MYSQL仍然允许我从命令行登录而无需输入密码?我可以在root UNIX提示符下键入“ mysql”,它不要求输入密码,仍然允许我进行root访问。我不明白为什么现在不要求“ mysql -u root”询问我在帐户上设置的密码。

另外,我无法以“ root”用户身份从远程计算机登录mysql。我没有在下面正确配置它吗?我收到错误消息:“主机...不允许连接到该MySQL服务器。我不是为'%'配置了它吗?

这是我的用户表:

mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| %         | root |                                           |
| 127.0.0.1 | root |                                           |
| ::1       | root |                                           |
| localhost |      |                                           |
| %         |      |                                           |
+-----------+------+-------------------------------------------+
6 rows in set (0.00 sec)

Answers:


4

看起来密码是在'root'@'localhost'用户条目上设置的,但未在'root'@'%'条目上设置;基于此,将允许无密码身份验证。

为了安全起见,请重新考虑允许从任何地方进行根访问。如果确实需要它,那么就摆脱localhost规范:

drop user 'root'@'localhost';
drop user 'root'@'127.0.0.1';
drop user 'root'@'::1';

并设置'root'@'%'用户密码:

set password for 'root'@'%' = password('passwordhere');

那是我需要的一切,然后是一些。谢谢。我不确定什么是安全删除或不安全的,您回答了我的问题。好答案。:-)
djangofan 2011年

4

好吧,答案就在该表中-您需要删除没有列出密码的“ root”行。

另外,看起来您在不使用用户或不使用通道的情况下就可以从任何地方(?!?!)连接。可能是个坏主意。我会做类似的事情:

mysql> use mysql;
mysql> delete from user where password = "";

2

不要忘记刷新特权,否则您仍然可以不用密码登录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.