目录
一、rm -rf /var/lib/mysql/
有些时候为了实验环境干净,我们需要删除数据库中所有数据。MySQL中所有数据(库、表)都在/var/lib/mysql/目录下,所以为了方便我们可以直接把此目录下所有文件删除掉。
二、mysqld --initialize
mysqld --initialize可以初始化数据目录,可以帮我们将/var/lib/mysql/恢复到刚安装MySQL的时候。在某些MySQL版本中,在删除/var/lib/mysql/下的文件后,也可以通过systemctl restart mysql来进行初始化,它自动检测并初始化数据库,但这并不是通用的,所以建议用mysqld --initialize。
注意:
重启数据库服务在不同系列操作系统中有所不同:
#centos/rocky
systemctl restart mysqld.service
#ubuntun
systemctl restart mysql.service
#另外上面俩种写法后面的.service都可以省略
mysqld --initialize初始化后,检查/var/lib/mysql/目录,是否初始化成功?如下图这样大概就是成功的:
如果只生成了一个ib_buffer_pool,将ib_buffer_pool删除后再执行一遍mysqld --initialize即可。
三、重新生成密码
在初始化成功之后会重新生成随机的密码,如果你直接使用mysql登录,会报错:
root@Ubuntu22:/var/lib/mysql# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
这样就必须使用生成的密码才能登录(也可以修改配置文件来跳过密码),随机生成的密码在错误日志的文件中。
#rocky
/var/log/mysql/mysqld.log
#ubuntun
/var/log/mysql/error.log
注意,这个密码会过期的,要找最近生成的密码才行。
另外直接使用以下命令登录也会报错:
mysql -uroot -p8&MDa:Q1Vg0i
正确的方式:
不要将密码打在命令行里面,出现输入密码的提示后,直接粘贴或手动输入密码进去。
四、修改密码