Exception: ERROR
1045
(
28000
): Access denied
for
user
'
root
'
@
'
localhost
'
(
using
password: NO)
问题描述如下:
landen@landen
-Lenovo:~
$ su root;
密码:
root@landen
-Lenovo:/home/
landen# mysql
ERROR
1045
(
28000
): Access denied
for
user
'
root
'
@
'
localhost
'
(
using
password: NO)
原因:
mysql数据库的user表里,存在用户名为空的账户即匿名账户,导致登录的时候是虽然用的是root,但实际是匿名登录的,通过错误提示里的
''@'localhost'
可以看出来
solution:
1
.(http:
//
www.jb51.net/LINUXjishu/10981.html)
2
.(http:
//
blog.csdn.net/tys1986blueboy/article/details/7056835)
演示如下:
root@landen
-Lenovo:/home/landen#
/etc/init.d/
mysql stop
Rather than invoking init scripts through
/etc/init.d, use the service(
8
)
utility, e.g. service mysql stop
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(
8
) utility, e.g. stop mysql
mysql stop
/
waiting
root@landen
-Lenovo:/home/landen#
mysqld_safe --user=mysql --skip-grant-tables --skip-networking&
[
1
]
15969
root@landen
-Lenovo:/home/landen#
130406
15
:
32
:
52
mysqld_safe Can
'
t log to error log and syslog at the same time. Remove all --log-error configuration options for --syslog to take effect.
130406
15
:
32
:
52
mysqld_safe Logging to
'
/var/log/mysql/error.log
'
.
130406
15
:
32
:
52
mysqld_safe Starting mysqld daemon with databases
from
/
var
/lib/
mysql
root@landen
-Lenovo:/home/landen#
mysql -
u root mysql
Reading table information
for
completion of table and column names
You can turn off
this
feature to
get
a quicker startup with -
A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id
is
1
Server version:
5.5
.
29
-0ubuntu0.
12.04
.
2
(Ubuntu)
Copyright (c)
2000
,
2012
, 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
>
update user set Password=PASSWORD('lk198981') where user='root'
;
Query OK,
0
rows affected (
0.08
sec)
Rows matched:
4
Changed:
0
Warnings:
0
mysql
>
flush privileges;
Query OK,
0
rows affected (
0.04
sec)
mysql
>
quit;
Bye
root@landen
-Lenovo:/home/landen#
/etc/init.d/
mysql restart
Rather than invoking init scripts through
/etc/init.d, use the service(
8
)
utility, e.g. service mysql restart
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(
8
) and then start(
8
) utilities,
e.g. stop mysql ; start mysql. The restart(
8
) utility
is
also available.
mysql start
/running, process
16401
root@landen
-Lenovo:/home/landen#
mysql -uroot -
p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id
is
37
Server version:
5.5
.
29
-0ubuntu0.
12.04
.
2
(Ubuntu)
Copyright (c)
2000
,
2012
, 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
>
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| metastore_db |
| mysql |
| performance_schema |
| test |
+--------------------+
5
rows
in
set
(
0.00
sec)
mysql
>
create database student;
Query OK,
1
row affected (
0.01
sec)
mysql
>
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| metastore_db |
| mysql |
| performance_schema |
| student |
| test |
+--------------------+
6
rows
in
set
(
0.00
sec)
mysql
>
use student;
Database changed
mysql
>
quit;
Bye
mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

