MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)的真正原因...
在博客Linux mysql 5.6: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)里 面,我介紹了一下安裝MySQL后登陸MySQL時會遇到ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 這個錯誤,當時不知道真正的原因,搜索了一些網上的資料,測試驗證了如何解決這個問題,但是一直不知道具體的原因。今天終于把這個問題給徹底搞清楚了。
下面我以MySQL 5.6.20為例子,刨析一下這個錯誤的真正原因,如下所示
[root@DB-Server tmp]# rpm -ivh MySQL-server-advanced-5.6.20-1.rhel5.x86_64.rpm Preparing...??????????????? ########################################### [100%] ?? 1:MySQL-server-advanced? ########################################### [100%] warning: user mysql does not exist - using root warning: group mysql does not exist - using root 2015-03-26 10:49:06 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2015-03-26 10:49:07 5082 [Note] InnoDB: Using atomics to ref count buffer pool pages 2015-03-26 10:49:07 5082 [Note] InnoDB: The InnoDB memory heap is disabled 2015-03-26 10:49:07 5082 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2015-03-26 10:49:07 5082 [Note] InnoDB: Memory barrier is not used 2015-03-26 10:49:07 5082 [Note] InnoDB: Compressed tables use zlib 1.2.3 2015-03-26 10:49:07 5082 [Note] InnoDB: Using Linux native AIO 2015-03-26 10:49:07 5082 [Note] InnoDB: Using CPU crc32 instructions 2015-03-26 10:49:07 5082 [Note] InnoDB: Initializing buffer pool, size = 128.0M 2015-03-26 10:49:07 5082 [Note] InnoDB: Completed initialization of buffer pool 2015-03-26 10:49:07 5082 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created! 2015-03-26 10:49:07 5082 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB 2015-03-26 10:49:07 5082 [Note] InnoDB: Database physically writes the file full: wait... 2015-03-26 10:49:07 5082 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB 2015-03-26 10:49:07 5082 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB 2015-03-26 10:49:08 5082 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0 2015-03-26 10:49:08 5082 [Warning] InnoDB: New log files created, LSN=45781 2015-03-26 10:49:08 5082 [Note] InnoDB: Doublewrite buffer not found: creating new 2015-03-26 10:49:08 5082 [Note] InnoDB: Doublewrite buffer created 2015-03-26 10:49:08 5082 [Note] InnoDB: 128 rollback segment(s) are active. 2015-03-26 10:49:08 5082 [Warning] InnoDB: Creating foreign key constraint system tables. 2015-03-26 10:49:08 5082 [Note] InnoDB: Foreign key constraint system tables created 2015-03-26 10:49:08 5082 [Note] InnoDB: Creating tablespace and datafile system tables. 2015-03-26 10:49:08 5082 [Note] InnoDB: Tablespace and datafile system tables created. 2015-03-26 10:49:08 5082 [Note] InnoDB: Waiting for purge to start 2015-03-26 10:49:08 5082 [Note] InnoDB: 5.6.20 started; log sequence number 0 2015-03-26 10:49:08 5082 [Note] RSA private key file not found: /var/lib/mysql//private_key.pem. Some authentication plugins will not work. 2015-03-26 10:49:08 5082 [Note] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work. A random root password has been set. You will find it in?'/root/.mysql_secret'. 2015-03-26 10:49:09 5082 [Note] Binlog end 2015-03-26 10:49:09 5082 [Note] InnoDB: FTS optimize thread exiting. 2015-03-26 10:49:09 5082 [Note] InnoDB: Starting shutdown... 2015-03-26 10:49:10 5082 [Note] InnoDB: Shutdown completed; log sequence number 1625977 ? ? 2015-03-26 10:49:10 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2015-03-26 10:49:10 5104 [Note] InnoDB: Using atomics to ref count buffer pool pages 2015-03-26 10:49:10 5104 [Note] InnoDB: The InnoDB memory heap is disabled 2015-03-26 10:49:10 5104 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2015-03-26 10:49:10 5104 [Note] InnoDB: Memory barrier is not used 2015-03-26 10:49:10 5104 [Note] InnoDB: Compressed tables use zlib 1.2.3 2015-03-26 10:49:10 5104 [Note] InnoDB: Using Linux native AIO 2015-03-26 10:49:10 5104 [Note] InnoDB: Using CPU crc32 instructions 2015-03-26 10:49:10 5104 [Note] InnoDB: Initializing buffer pool, size = 128.0M 2015-03-26 10:49:10 5104 [Note] InnoDB: Completed initialization of buffer pool 2015-03-26 10:49:10 5104 [Note] InnoDB: Highest supported file format is Barracuda. 2015-03-26 10:49:10 5104 [Note] InnoDB: 128 rollback segment(s) are active. 2015-03-26 10:49:10 5104 [Note] InnoDB: Waiting for purge to start 2015-03-26 10:49:10 5104 [Note] InnoDB: 5.6.20 started; log sequence number 1625977 2015-03-26 10:49:10 5104 [Note] RSA private key file not found: /var/lib/mysql//private_key.pem. Some authentication plugins will not work. 2015-03-26 10:49:10 5104 [Note] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work. 2015-03-26 10:49:10 5104 [Note] Binlog end 2015-03-26 10:49:10 5104 [Note] InnoDB: FTS optimize thread exiting. 2015-03-26 10:49:10 5104 [Note] InnoDB: Starting shutdown... 2015-03-26 10:49:12 5104 [Note] InnoDB: Shutdown completed; log sequence number 1625987 ? ? ? ? A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER ! You will find that password in?'/root/.mysql_secret'. ? You must change that password on your first connect, no other statement but 'SET PASSWORD' will be accepted. See the manual for the semantics of the 'password expired' flag. ? Also, the account for the anonymous user has been removed. ? In addition, you can run: ? ? /usr/bin/mysql_secure_installation ? which will also give you the option of removing the test database. This is strongly recommended for production servers. ? See the manual for more instructions. ? Please report any problems at http://bugs.mysql.com/ ? The latest information about MySQL is available on the web at ? ? http://www.mysql.com ? Support MySQL by buying support/licenses at http://shop.mysql.com ? WARNING: Found existing config file /usr/my.cnf on the system. Because this file might be in use, it was not replaced, but was used in bootstrap (unless you used --defaults-file) and when you later start the server. The new default config file was created as /usr/my-new.cnf, please compare it with your file and take the changes you need.?
MySQL 的安裝日志信息中,你會看到MySQL生成了root用戶的隨機密碼(如下截圖所示),并將這個隨機密碼放置在/root/.mysql_secret 中。并且強制在第一次登陸時修改root用戶的密碼。Mysql 5.6及以后版本出處于安全考慮,root密碼不為空。所以在MySQL的安裝過程中,會生成一個隨機密碼,但是對于我們這樣的初學者,不了解情況,于是 便從網上搜索如何解決問題的資料,而問題關鍵在此,很多做技術的人,了解不夠深入,又喜歡隨波逐流,停留在問題的表層,并未深入研究。而高手又不屑于這類 簡單的問題。
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in '/root/.mysql_secret'.
You must change that password on your first connect,
no other statement but 'SET PASSWORD' will be accepted.
See the manual for the semantics of the 'password expired' flag.
Also, the account for the anonymous user has been removed.
知道了錯誤的前因后果,那么很容易就搞定這個問題了。找到隨機密碼,登錄數據庫后修改密碼。問題解決
?
[root@DB-Server tmp]# mysql -u root -p Enter password: Welcome to the MySQL monitor.? Commands end with ; or \g. Your MySQL connection id is 8 Server version: 5.6.20-enterprise-commercial-advanced ? Copyright (c) 2000, 2014, 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; ERROR 1820 (HY000): You must SET PASSWORD before executing this statement mysql> set password=password('wer@34'); Query OK, 0 rows affected (0.03 sec) ? mysql> show databases; +--------------------+ | Database?????????? | +--------------------+ | information_schema | | mysql????????????? | | performance_schema | | test?????????????? | +--------------------+ 4 rows in set (0.00 sec)總結
以上是生活随笔為你收集整理的MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)的真正原因...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: socket inet_pton
- 下一篇: JQ实现三个Select下拉框互斥