停止 MySQL 服务:打开终端,输入以下命令停止 MySQL 服务(根据你的系统和 MySQL 版本,命令可能有所不同):
systemctl stop mysqld
输入以下命令以安全模式启动 MySQL,跳过权限验证:
sudo mysqld_safe --skip-grant-tables &
&
符号表示在后台运行该进程。
打开另一个终端窗口,输入 mysql
并回车,无需密码即可登录到 MySQL 服务器。
在 MySQL 命令行中,执行以下语句来修改密码(以 MySQL 8.0 为例):
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;
将新密码替换为实际密码。
sudo systemctl start mysqld
#登录
mysql -h 127.0.0.1 -uroot -p
打开终端,使用管理员权限(通常需要 sudo)停止 MySQL 服务。对于使用 systemd 管理服务的系统(如大多数现代 Linux 发行版),可以执行以下命令:
sudo systemctl stop mysqld
找到MySQL的配置文件,通常是my.cnf或 my.ini(在 Linux 系统中一般位于/etc/目录下)
vim /etc/my.cnf
[mysqld]
skip-grant-tables
# 其他配置项...
重新启动 MySQL 服务,使其加载新的配置:
systemctl start mysqld
打开终端,直接输入 mysql
命令,此时不需要密码即可登录到 MySQL 服务器:
mysql
在 MySQL 命令行中,切换到 mysql
数据库(因为用户密码信息存储在该数据库中),然后使用 ALTER USER
语句修改密码。对于 MySQL 8.0 及以上版本,示例如下:
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;
将新密码替换为你想要设置的实际密码。FLUSH PRIVILEGES
语句用于刷新权限表,使新密码立即生效。
#去掉配置文件中的skip-grant-tables
vim /etc/my.cnf
[mysqld]
skip-grant-tables #删除此行
# 其他配置项...
#重启mysql服务
systemctl restart mysqld
#登录
mysql -h 127.0.0.1 -uroot -p
#修改密码
-- 切换到 mysql 数据库,因为用户和权限信息存储在该数据库中
USE mysql;
-- 修改 root 用户在本地登录(localhost)时的密码,新密码为 'newpassword'
-- 你需要将 'newpassword' 替换为你实际想要设置的密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
-- 刷新权限,使新密码立即生效
FLUSH PRIVILEGES;
-- 修改当前登录用户的密码,新密码为 'newpassword'
-- 你需要将 'newpassword' 替换为你实际想要设置的密码
SET PASSWORD = PASSWORD('newpassword');
-- 如果你想修改其他用户的密码(需有相应权限)
-- 例如修改 root 用户在本地登录(localhost)时的密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpassword');
ALTER LOGIN [your_login] WITH PASSWORD = 'new_password', PASSWORD_LIFETIME = 90;
ALTER LOGIN [your_login] WITH PASSWORD = 'new_password', PASSWORD_LIFETIME = 0;
以拥有足够权限的用户(如 root)登录 MySQL 数据库:
USE mysql;
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
USE mysql;
SELECT User, Host, password_expired FROM mysql.user WHERE User = 'root' AND Host = 'localhost';
UPDATE mysql.user SET password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
SELECT user, host, password_expired, password_lifetime FROM mysql.user WHERE user = 'root';
ALTER USER 'root'@'%' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'127.0.0.1' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
ALTER USER 'stc'@'%' PASSWORD EXPIRE NEVER;