为什么mysql设置了密码之后,不需要输入密码就可以登录数据库了?

CentOS安装mysql之后,之前设置了密码,但输入mysql -u -p后,会直接进入mysql,而输入mysql -uroot -p,则需要输入密码,这是为什么呢?

[root@hadoop01 ~]# mysql -u -p
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.1.73 Source distribution
 
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql> quit
Bye
[root@hadoop01 ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.1.73 Source distribution
 
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

通过查找资料,原来是因为数据库里面有空用户。

解决方法如下:
进入mysql输入:

select * from mysql.user where user=”;

mysql> select * from mysql.user where user=”;


查询有结果,然后进行下一步。
use mysql;
delete from user where user = ”;

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> delete from user where user = '';
Query OK, 2 rows affected (0.00 sec)

删除了多余的空白账户, 然后进行下一步。
flush privileges;­

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

重载一次权限表,最后用
service mysqld restart

[root@hadoop01 ~]# service mysqld restart
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]

重启mysql服务,问题得到解决,

[root@hadoop01 ~]# mysql -u -p
ERROR 1045 (28000): Access denied for user '-p'@'localhost' (using password: NO)
[root@hadoop01 ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.73 Source distribution
 
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql> quit;
Bye

注意:
1、一定要记住重启mysql服务,否则不会生效。
2、msyql的用户表在mysql数据库中的user表中,主要字段有host,user,password等,作为mysql用的管理的主要表。

发表回复

京ICP备15027918号-1