前几天在用 Navicat 去连本地的 MySQL 的时候发现我已经忘了密码了,试了网上很多方式都不行… 后来发现其实可以自己直接去看当初设置的密码,下面将方法总结出来分享给大家,有需要的朋友们可以参考借鉴,下面来一起看看吧。
MySQL 是一个开放源码的小型关联式数据库管理系统,开发者为瑞典 MySQL AB 公司。MySQL 被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。
本文给大家分享的是查看 MySQL 连接的 root 密码的方法,下面话不多说来来看正文:
1. 首先我们进到 MySQL 的 bin 目录下
- ➜ cd /usr/local/mysql/bin
2. 切换成 root 身份
- ➜ bin sudo su
3. 跨过权限的验证
- sh-3.2# ./mysqld_safe --skip-grant-tables &
- [1] 9451
- sh-3.2# 2017-01-03T15:40:10.6NZ mysqld_safe Logging to '/usr/local/mysql/data/yzydeMacBook-Pro.local.err'.
- 2017-01-03T15:40:10.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
4. 以 root 身份登录 MySQL
- ./mysql -uroot
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 2
- Server version: 5.7.12 MySQL Community Server (GPL)
- Copyright (c) 2000, 2016, 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.
5. 选择 mysql 数据库
- 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
6. 显示 mysql 数据库下的表
- mysql> show tables;
- +---------------------------+
- | Tables_in_mysql |
- +---------------------------+
- | columns_priv |
- | db |
- | engine_cost |
- | event |
- | func |
- | general_log |
- | gtid_executed |
- | help_category |
- | help_keyword |
- | help_relation |
- | help_topic |
- | innodb_index_stats |
- | innodb_table_stats |
- | ndb_binlog_index |
- | plugin |
- | proc |
- | procs_priv |
- | proxies_priv |
- | server_cost |
- | servers |
- | slave_master_info |
- | slave_relay_log_info |
- | slave_worker_info |
- | slow_log |
- | tables_priv |
- | time_zone |
- | time_zone_leap_second |
- | time_zone_name |
- | time_zone_transition |
- | time_zone_transition_type |
- | user |
- +---------------------------+
- 31 rows in set (0.00 sec)
7. 很明显我们需要的密码是存在 user 这个表下的,所以我们直接看 user 的表结构是怎么样的
- mysql> show columns from user;
- +------------------------+-----------------------------------+------+-----+-----------------------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +------------------------+-----------------------------------+------+-----+-----------------------+-------+
- | Host | char(60) | NO | PRI | | |
- | User | char(32) | NO | PRI | | |
- | Select_priv | enum('N','Y') | NO | | N | |
- | Insert_priv | enum('N','Y') | NO | | N | |
- | Update_priv | enum('N','Y') | NO | | N | |
- | Delete_priv | enum('N','Y') | NO | | N | |
- | Create_priv | enum('N','Y') | NO | | N | |
- | Drop_priv | enum('N','Y') | NO | | N | |
- | Reload_priv | enum('N','Y') | NO | | N | |
- | Shutdown_priv | enum('N','Y') | NO | | N | |
- | Process_priv | enum('N','Y') | NO | | N | |
- | File_priv | enum('N','Y') | NO | | N | |
- | Grant_priv | enum('N','Y') | NO | | N | |
- | References_priv | enum('N','Y') | NO | | N | |
- | Index_priv | enum('N','Y') | NO | | N | |
- | Alter_priv | enum('N','Y') | NO | | N | |
- | Show_db_priv | enum('N','Y') | NO | | N | |
- | Super_priv | enum('N','Y') | NO | | N | |
- | Create_tmp_table_priv | enum('N','Y') | NO | | N | |
- | Lock_tables_priv | enum('N','Y') | NO | | N | |
- | Execute_priv | enum('N','Y') | NO | | N | |
- | Repl_slave_priv | enum('N','Y') | NO | | N | |
- | Repl_client_priv | enum('N','Y') | NO | | N | |
- | Create_view_priv | enum('N','Y') | NO | | N | |
- | Show_view_priv | enum('N','Y') | NO | | N | |
- | Create_routine_priv | enum('N','Y') | NO | | N | |
- | Alter_routine_priv | enum('N','Y') | NO | | N | |
- | Create_user_priv | enum('N','Y') | NO | | N | |
- | Event_priv | enum('N','Y') | NO | | N | |
- | Trigger_priv | enum('N','Y') | NO | | N | |
- | Create_tablespace_priv | enum('N','Y') | NO | | N | |
- | ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
- | ssl_cipher | blob | NO | | NULL | |
- | x509_issuer | blob | NO | | NULL | |
- | x509_subject | blob | NO | | NULL | |
- | max_questions | int(11) unsigned | NO | | 0 | |
- | max_updates | int(11) unsigned | NO | | 0 | |
- | max_connections | int(11) unsigned | NO | | 0 | |
- | max_user_connections | int(11) unsigned | NO | | 0 | |
- | plugin | char(64) | NO | | mysql_native_password | |
- | authentication_string | text | YES | | NULL | |
- | password_expired | enum('N','Y') | NO | | N | |
- | password_last_changed | timestamp | YES | | NULL | |
- | password_lifetime | smallint(5) unsigned | YES | | NULL | |
- | account_locked | enum('N','Y') | NO | | N | |
- +------------------------+-----------------------------------+------+-----+-----------------------+-------+
- 45 rows in set (0.02 sec)
8. 表的内容比较多,但是我们很容易就发现,密码其实是存在 authentication_string 字段下的,那我们就可以直接读 User 内容为 root 的密码了
- mysql> select authentication_string from user where User='root';
- +-------------------------------------------+
- | authentication_string |
- +-------------------------------------------+
- | *781D25322166DB7FF99BA4A1FA5ED30439A60DDE |
- +-------------------------------------------+
- 1 row in set (0.01 sec)
OK,那我们拿着这个密码到 Navicat 试试看
总结
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
来源: http://www.phperz.com/article/17/0320/318482.html