Mysql数据库自建,使用,问题排查最佳实践 案例四 数据库密码忘记的问题 plaintext [root@zs ~] mysql uroot p Enter password: ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES) [root@zs ~] mysql uroot p Enter password: ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES) 解决思路: 目前是进入不了数据库的情况,所以我们要考虑是不是可以跳过权限。因为在数据库中,MySQL 数据库中 user 表记录着我们用户的信息。 解决方法:启动 MySQL 数据库的过程中,可以这样执行: plaintext /usr/local/mysql/bin/mysqldsafe –defaultsfile/etc/my.cnf –skipgranttables & 这样启动,就可以不用输入密码,直接进入 MySQL 数据库了。然后在修改你自己想要改的 root 密码即可。 plaintext update mysql.user set passwordpassword(‘root123′) where user’root’; 案例五 truncate 删除数据,导致自动清空自增 ID,前端返回报错 not found这个问题的出现,就要考虑下 truncate 和 delete 的区别了,看下实验演练: 首先先创建一张表: plaintext CREATE TABLE t ( a int(11) NOT NULL AUTOINCREMENT, b varchar(20) DEFAULT NULL, PRIMARY KEY (a), KEY b (b) ) ENGINEInnoDB AUTOINCREMENT300 DEFAULT CHARSETutf8 插入三条数据: plaintext mysql> insert into t (b) values (‘aa’); Query OK, 1 row affected (0.00 sec) mysql> insert into t (b) values (‘bb’); Query OK, 1 row affected (0.00 sec) mysql> insert into t (b) values (‘cc’); Query OK, 1 row affected (0.00 sec) mysql> select from t; —–+——+ a b —–+——+ 300 aa 301 bb 302 cc —–+——+ 3 rows in set (0.00 sec) 先用 delete 进行删除全表信息,再插入新值。 结果发现 truncate 把自增初始值重置了,自增属性从 1 开始记录了。当前端用主键 id 进行查询时,就会报没有这条数据的错误。 个人建议不要使用 truncate 对表进行删除操作,虽然可以回收表空间,但是会涉及自增属性问题。这些坑,我们不要轻易钻进去。