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