前言:
当我们忘记mysql数据库密码时,可以通过mysqld_safe --skip-grant-table
进入数据库安全模式启动mysql 数据库。以无密码方式登录root用户,然后通过命令修改root用户密码。修改成功后关闭mysql 服务,结束进程.mysqld_safe --skip-grant-table
,然后重启mysql服务,重新登录。
服务管理
systemctl list-unit-files | grep mariadb.service
systemctl start mariadb.service
netstat -anptul | grep 3306
sudo mysql -uroot -p
修改MySQL 密码
修改MySQL 数据库用户root 密码为123456。
sudo mysqladmin -u root -p password "你的新密码"
当我们忘记了数据库root用户密码或者不能使用命令修改root用户密码,可以使用MySQL 安全模式
MySQL 安全模式(救援,密码破解。)
条件:
- 必须是Linux 的root 管理员;
- 必须先停掉mysql 数据库工作;
- 以安全模式启动mysql 数据库。
sudo systemctl stop mariadb.service
sudo systemctl status mariadb.service
命令过程
安全模式启动mysql 数据库。
mysqld_safe --skip-grant-table
修改root 用户密码。
update mysql.user set password=password('root') where host='localhost' and user='root';
当我们在使用 “UPDATE user SET password=PASSWORD(‘newpassword’) WHERE User=‘root’;” 命令时提示 “ERROR 1356 (HY000): View ‘mysql.user’ references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them”,表明在您的 MariaDB 版本中,‘user’ 表已经不存在,由于版本不同的MariaDB解决方案也不同。
1.如果你的版本在10.4.4以上,你可以使用如下命令重置密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
2.如果你的版本在10.4.4之前,你可以使用如下命令重置密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpassword');
记得重启mysql服务,并使用新密码登录MariaDB。
查看mysql版本号:
select version();
修改root用户密码,并查看是否成功!!!
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
select user,password,host from mysql.user;
闭mysql 服务,结束进程.mysqld_safe --skip-grant-table
重启服务,使用新改的密码登录
systemctl restart mariadb.service
mysql -uroot -p