java面试题网站:www.javaoffers.com
服务器经过一次宕机,重启后 输入 mysql -uroot -p密码 登录不进去(Access denied for user 'root'@'localhost' (using password: YES)),反而输入mysql 命令直接登录进去。
直接用mysql命令登录进去后,show databases; 查看一下数据库发现:只有 information_schema 和 test 这两个数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
脑袋感觉有点方,我其他的库呢,
解决方案:
#首先停止 mysql: service mysql stop(报错的话输入: service mysqld stop)
#然后输入 mysqld_safe --skip-grant-table 会显如下信息:
191215 02:17:35 mysqld_safe Logging to '/var/lib/mysql/node1.err'.
191215 02:17:35 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
另起一终端 然后你就可以用 mysql -uroot -p密码 进入mysql,输入 show databases; 发现你所有的库都回来了,但是如果你reboot重启后,任然会出现之前的问题。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hivedb |
| mh615 |
| mysql |
| performance_schema |
| test |
+--------------------+
#选择 mysq库 :use mysql , 然后查看一下 user 表:select user from user; (注意user 表中存在一user字段),发现有两条( '' ) 空 user数据,然后你只需要删除所有 user = ‘’ 的数据 即可,delete from user where user = '';然后reboot 重启。
mysql> select user from user;
+------+
| user |
+------+
| root |
| root |
| root |
| |
| |
| root |
+------+
delete from user where user = '';删除所有 user='' 的数据。exit ;退出mysql ,然后输入reboot重启服务器,
reboot 重启后,输入mysql 命令后 不能直接进msyql,这时你输入 mysql -uroot -p密码 就可以成功进入mysql,并且show databases;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hivedb |
| mh615 |
| mysql |
| performance_schema |
| test |
+--------------------+
6 rows in set (0.01 sec)
一切都变得正常了,你之前的库也都在了。