文章目录
有时候mysql的密码配置错误,连接不上mysql,就需要把mysql用户表重建一下。
直接用brew uninstall mysql@8.0
和 brew install mysql@8.0
(或者Ubuntu用apt 操作)是没有效果的。因为这只是重装了mysql app,并不会操作mysql data.
如果需要删除所有的数据库文件并重新初始化 MySQL,下面步骤将会完全清除 MySQL 的数据,包括所有数据库、用户、表、和设置。
1. 停止 MySQL 服务
首先,停止 MySQL 服务以确保文件不会被占用,这需要根据启动方式不同,采用不同的stop 方式:
# 1、Mac上启动采用 brew services start mysql
brew services stop mysql
# 2、Mac上启动采用 mysql.server start
mysql.server stop
# 3、Linux上启动采用 systemctl start mysql
systemctl stop mysql
2. 删除数据库文件
MySQL 数据库的实际文件通常存储在 datadir
中。删除该目录下的所有内容来清除所有数据库文件:
a) 先确定数据文件的datadir
是在哪里。
一般情况,datadir
如表所示。
环境 | datadir |
---|---|
Mac直接装mysql | /usr/local/var/mysql/* |
brew 装的Myql | /opt/homebrew/var/mysql/* |
Linux | /var/lib/mysql |
b) 如果还是没找到,终端中输入命令
mysqld --verbose --help | grep "datadir"
如果能连数据库,可以在数据库中找到
mysql> SHOW VARIABLES LIKE 'datadir';
+---------------+--------------------------+
| Variable_name | Value |
+---------------+--------------------------+
| datadir | /opt/homebrew/var/mysql/ |
+---------------+--------------------------+
注意: 这将删除 MySQL 中的所有数据文件,操作之前请确认已经备份了任何需要保留的数据。
3. 重新初始化 MySQL 数据目录
在删除了数据库文件后,需要重新初始化 MySQL 数据目录。运行以下命令:
mysqld --initialize --user=$(whoami) --basedir=$(brew --prefix mysql) --datadir=/usr/local/var/mysql
对于 M1/M2 芯片的 Mac:
mysqld --initialize --user=$(whoami) --basedir=$(brew --prefix mysql) --datadir=/opt/homebrew/var/mysql
4. 启动 MySQL 服务
现在重新启动 MySQL 服务:
brew services start mysql
5. 重新设置 root 用户密码
初始化完成后,设置 MySQL root
用户的密码。
- 登录 MySQL(不需要密码):
mysql -u root
- 设置密码:
# 这种修改密码的方式是 mysql 8.0 提供的,5.7不能通过这种方法修改
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
exit;
这样就删除所有数据库文件并重新初始化 MySQL 数据库。