1、在shell环境下用 mysqladmin 程序来设置密码

mysqladmin 是一个用于执行MySQL管理操作的命令行工具。它允许用户更改密码、创建数据库、删除数据库等。

步骤

  1. 打开终端或命令行界面。
  2. 输入以下命令来设置root账户的密码(假设新密码为new_password):
    
      
    
    	mysqladmin -u root -p'old_password' password 'new_password'
    • -u root 指定使用root账户。
    • -p'old_password' 如果root账户已经有密码,则在此处输入旧密码(注意,-p和旧密码之间不能有空格)。如果root账户没有密码,则只需输入-p并按回车,系统会提示你输入密码。
    • password 'new_password' 指定新密码。

注意事项

  • 如果root账户之前没有密码,可以直接使用-p(不带旧密码)并按回车,系统会提示你输入新密码。
  • 确保你有足够的权限来执行此操作。

2、用root进入 MySQL 后使用 SET PASSWORD 语句

步骤

  1. 打开终端或命令行界面。
  2. 输入以下命令登录MySQL(假设当前root账户没有密码,或者你已经知道密码):
    
    	mysql -u root -p
    然后输入root账户的密码。
  3. 登录后,使用以下SQL语句设置新密码(假设新密码为new_password):
    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
    • 'root'@'localhost' 指定了用户(root)和主机(localhost)。根据你的设置,主机名可能有所不同。
    • PASSWORD('new_password') 是MySQL的内置函数,用于加密密码。

注意事项

  • 在MySQL 5.7.6及更高版本中,SET PASSWORD 语句的语法有所变化,应使用ALTER USER语句代替:
    
    	ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

3、使用 GRANT 语句

虽然GRANT语句主要用于授权用户权限,但在某些MySQL版本中,它也可以用于设置或更改用户密码(尽管这不是其主要用途)。

步骤

  1. 打开终端或命令行界面。
  2. 输入以下命令登录MySQL(假设当前root账户没有密码,或者你已经知道密码):
    
    	mysql -u root -p
    然后输入root账户的密码。
  3. 登录后,使用以下SQL语句设置新密码(假设新密码为new_password):
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'new_password' WITH GRANT OPTION;
    FLUSH PRIVILEGES;

    • GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' 授予root账户对所有数据库和表的所有权限。
    • IDENTIFIED BY 'new_password' 设置新密码。
    • WITH GRANT OPTION 允许root账户授予其他用户权限。
    • FLUSH PRIVILEGES; 刷新MySQL的权限缓存,使更改生效。

注意事项

  • 使用GRANT语句设置密码通常不是最佳实践,因为它主要用于授权用户权限。在更改密码时,建议使用SET PASSWORDALTER USER语句。

4、进入 mysql 库修改 user 表

直接修改MySQL的mysql数据库中的user表是另一种设置密码的方法,但这种方法风险较高,因为手动修改系统表可能会导致数据不一致或损坏。

步骤

  1. 打开终端或命令行界面。
  2. 输入以下命令登录MySQL(假设当前root账户没有密码,或者你已经知道密码):
    mysql -u root -p
    然后输入root账户的密码。
  3. 登录后,选择mysql数据库:
    
    	USE mysql;
  4. 更新user表中的authentication_string字段(在MySQL 5.7及更高版本中,该字段存储了加密后的密码):
    UPDATE user SET authentication_string=PASSWORD('new_password') WHERE User='root' AND Host='localhost';
    FLUSH PRIVILEGES;

    • PASSWORD('new_password') 是MySQL的内置函数,用于加密密码。
    • WHERE User='root' AND Host='localhost' 指定了要更新的记录。
    • FLUSH PRIVILEGES; 刷新MySQL的权限缓存,使更改生效。

注意事项

  • 直接修改系统表可能会导致数据不一致或损坏,因此这种方法通常不推荐使用。
  • 在执行此操作之前,请确保已经备份了mysql数据库,以便在出现问题时能够恢复。
  • 在MySQL 8.0及更高版本中,authentication_string字段的加密方式发生了变化,因此这种方法可能不再适用。

综上所述,为root账户指定密码有多种方法,但每种方法都有其优缺点和适用场景。在选择方法时,请根据你的具体需求和MySQL版本进行权衡。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐