第 65.1 节:在 Linux 中更改 MySQL root 密码

步骤 1: 停止 MySQL 服务器

  • Ubuntu 或 Debian:sudo /etc/init.d/mysql stop
  • CentOS、Fedora 或 Red Hat Enterprise Linux:sudo /etc/init.d/mysqld stop

步骤 2: 以跳过权限表的方式启动 MySQL 服务器

sudo mysqld_safe --skip-grant-tables &

如果 mysqld_safe 不可用:

sudo mysqld --skip-grant-tables &

步骤 3: 连接到 MySQL 服务器

mysql -u root

步骤 4: 设置新的 root 密码

版本 > 5.7:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
EXIT;

版本 ≤ 5.7:

FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
FLUSH PRIVILEGES;
EXIT;

注意: ALTER USER 语法从 MySQL 5.7.6 开始引入。

步骤 5: 重启 MySQL 服务器

  • Ubuntu 或 Debian:
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
  • CentOS、Fedora 或 Red Hat Enterprise Linux:
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start

第 65.2 节:在 Windows 中更改 MySQL root 密码

步骤 1: 以任意方式启动命令提示符。

步骤 2: 切换到 MySQL 安装目录,例如:

C:\> cd C:\mysql\bin

步骤 3: 启动 mysql 命令提示符

C:\mysql\bin> mysql -u root mysql

步骤 4: 执行更改密码的查询

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('my_new_password');

第 65.3 节:通用流程

  1. 停止 MySQL(mysqld)服务器/守护进程。
  2. 使用 --skip-grant-tables 选项启动 MySQL 服务器进程,以便不提示密码:mysqld_safe --skip-grant-tables &
  3. 以 root 用户连接到 MySQL 服务器:mysql -u root
  4. 更改密码:
  5. (5.7.6 及更高版本):ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-password';
  6. (5.7.5 及更早版本,或 MariaDB):SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new-password');
  7. FLUSH PRIVILEGES;
  8. quit;
  9. 重启 MySQL 服务器。

注意: 这仅在你物理上位于同一台服务器上时有效。

在线文档:http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html