密码不正确呗,检查下,特别是大小写
https://my.oschina.net/ldm95/blog/879580
两种可能,一种是密码错误,一种是"root"用户可能没有授予本地主机(localhost)的访问权限
第一种自行解决
第二种你可以刷命令试试
GRANT ALL PRIVILEGES ON . TO 'root'@'localhost' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
('your_password'为您的正确密码,请自行替换)
mysql -u root -p
-p后面不接密码
出现Enter password:后输入密码
首要的一件事情就是恢复表结构,如果很幸运地保留了当时的表结构,此步可跳过,直接执行上面的1步骤。
1.1 随意创建一张同名表
CREATE TABLE table_xyz(a int)ENGINE=InnoDB;
1.2 关闭mysql服务
net stop mysql
1.3 复制备份的db_old/table_xyz.frm覆盖新建的表db_new/table_xyz.frm
1.4 开启mysql服务
net start mysql
1.5 在mysql安装目录data文件夹下用文本编辑器打开.err文件
这是mysql的错误日志,找到诸如
[Warning] InnoDB: Table db_new/table_xyz contains 1 user defined columns in InnoDB, but 6 columns in MySQL. Please check INFORMATION_SCHEMA.INNODB_SYS_COLUMNS 的记录,发现原表拥有6个字段。
1.6 删除当前表,新建一张拥有6个字段的同名表
mysql> DROP TABLE table_xyz;
Query OK, 0 rows affected (0.26 sec)
mysql>CREATE TABLE table_xyz(a1 int,a2 int,a3 int,a4 int,a5 int,a6 int)ENGINE=InnoDB;
Query OK, 0 rows affected (0.66 sec)
1.7 重复步骤1.2-1.3
修改配置文件my.ini在[mysqld]下添加/修改innodb_force_recovery=6
1.8 启动mysql服务,查看表结构,发现表结构已经恢复
mysql> desc table_xyz;
+-------------+---------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| uid | varchar(10) | NO | | NULL | |
| content | varchar(1000) | YES | | NULL | |
| pub_time | varchar(20) | YES | | NULL | |
| tool | varchar(50) | YES | | NULL | |
| create_time | datetime | YES | | CURRENT_TIMESTAMP | |
+-------------+---------------+------+-----+-------------------+----------------+
6 rows in set, 1 warning (0.01 sec)
导出表结构,在命令提示符下输入
mysqldump -uroot -proot db_new table_xyz> d:\table_xyz.sql
在.sql文件中找到建表语句。
或者也可以用数据库管理软件如navicat中找到这张表,在对象信息中复制下DDL选项卡里的内容。
1.9 停止mysql服务,修改配置文件my.ini
修改innodb_force_recovery=0或者直接注释掉。
2.0 启动mysql服务,删掉这张表,用获得的建表语句新建表
至此,表结构已经完全恢复。