2月阅读周·MySQL数据库入门:用户管理之修改用户密码篇
引言
《MySQL数据库入门》作为一种技术的入门教程,最重要也最难的一件事情就是要将一些非常复杂、难以理解的思想和问题简单化,让初学者能够轻松理解并快速掌握。本教材对每个知识点都进行了深入的分析,并针对每个知识点精心设计了相关案例,然后模拟这些知识点在实际工作中的运用,真正做到了知识的由浅入深、由易到难。
全书可以大致分成三个部分的内容:
第1章主要介绍了数据库的相关知识,包括创建的数据库产品、数据库存储结构、MySQL的安装配置与使用等。通过本章的学习,要求初学者对数据库有一个大致的认识,并且可以独立完成MySQL数据库的安装和配置。
第6~7章讲解了数据库中的事务、存储过程以及视图,这些内容可以对MySQL数据库进行性能优化,希望初学者可以循序渐进掌握MySQL中的各项技术。
第8章讲解了MySQL数据库的高级操作,包括数据的备份还原、用户管理和权限管理,要求初学者会对数据进行备份还原,并且可以通过权限控制管理不同的用户。
修改用户密码
MySQL中的用户都可以对数据库进行不同操作,因此管理好每个用户的密码是至关重要的,密码一旦丢失就需要及时进行修改。root用户具有最高的权限,不仅可以修改自己的密码,还可以修改普通用户的密码,而普通用户只能修改自己的密码。
由于root用户和普通用户修改密码的方式比较类似,接下来就以root用户修改自己的密码为例进行演示,具体如下。
1.修改root用户的密码
1)使用mysqladmin命令修改root用户密码
mysqladmin命令通常用于执行一些管理性的工作,以及显示服务器状态等,在MySQL中可以使用该命令修改root用户的密码。
mysqladmin命令修改密码的语法格式如下:
mysqladmin -u username [-h hostname] -p password new_password
上述语法格式中,username为要修改的用户名,这里指的是root用户,参数-h用于指定对应的主机,可以省略不写,默认为localhost,-p后面的password为关键字,而不是修改后的密码,new_password为新设置的密码。需要注意的是,在使用mysqladmin命令修改root用户密码时,需要在C:\Documents and Settings\Administrator>目录下进行修改。
在命令行窗口中,使用mysqladmin命令,将root用户的密码修改为mypwd1,SQL语句如下:
mysqladmin -u root -p password mypwd1
上述语句执行成功后,会提示输入密码,具体如下:
C:\Documents and Settings\Administrator>mysqladmin -u root -p password mypwd1
Enter password: ******
需要注意的是,上面提示输入密码,是指root用户的旧密码,密码输入正确后,该语句执行完毕,root用户的密码被修改,下次登录时使用新的密码即可。初学者可以在命令行窗口中进行验证,如下所示:
C:\Documents and Settings\Administrator>mysql -uroot -pmypwd1
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.5.27 MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respectiveowners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
从上述结果可以看出,使用新密码成功登录了MySQL数据库,因此,说明密码修改成功。
2)使用UPDATE语句修改root用户密码
由于所有的用户信息都存放在mysql.user表中,因此,只要root用户登录到MySQL服务器,使用UPDATE语句就可以直接修改自己的密码。
UPDATE语句修改密码的语法格式如下:
UPDATE mysql.user set Password=PASSWORD('new_password')
WHERE User='username' and Host='hostname';
root用户登录到MySQL服务器,通过UPDATE语句将root用户的密码修改为mypwd2,UPDATE语句如下:
UPDATE mysql.user SET Password=PASSWORD('mypwd2') WHERE User='root' and Host='localhost';
上述语句执行成功后,还需使用FLUSH PRIVILEGES重新加载权限表,然后就可以使用新密码登录MySQL数据库了,结果如下:
C:\Documents and Settings\Administrator>mysql -uroot -pmypwd2;
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.5.27 MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respectiveowners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
需要注意的是,由于UPDATE语句不能刷新权限表,因此一定要使用FLUSH PRIVILEGES语句重新加载用户权限,否则修改后的密码不会生效。
3)使用SET语句修改root用户的密码
root用户登录到MySQL服务器后,还可以通过SET语句修改root用户的密码。
SET语句修改密码的语法格式如下:
SET PASSWORD=PASSWORD('new_password');
需要注意的是,由于SET语句没有对密码加密的功能,因此,新密码必须使用PASSWORD()函数加密,并且新密码需要使用引号括起。
root用户登录到MySQL服务器,使用SET语句将root用户的密码修改为mypwd3,SET语句如下:
SET PASSWORD=password('mypwd3');
上述语句执行成功后,在命令行窗口中使用新密码mypwd3登录数据库,结果如下:
C:\Documents and Settings\Administrator> mysql -uroot -pmypwd3;
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.5.27 MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respectiveowners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
2.root用户修改普通用户的密码
1)使用GRANT语句修改普通用户密码
GRANT语句的作用比较多,不仅可以创建用户为用户授权,还可以修改用户的密码,通常情况下,为了不影响当前账户的权限,可以使用GRANT USAFE语句修改指定账户的密码。
GRANT语句修改密码的语法格式如下:
GRANT USAFE ON *.* TO 'username'@'localhost' IDENTIFIED BY [PASSWORD]'new_password';
2)使用UPDATE语句修改普通用户的密码
root用户具有操作数据库的所有权限,因此,它不仅可以使用UPDATE语句修改自己的密码,还可以使用UPDATE语句修改普通用户的密码,其语法格式与修改root用户密码的语法格式相同,具体如下:
UPDATE mysql.user set Password=PASSWORD('new_password')
WHERE User='username' and Host='hostname';
需要注意的是,使用上述语句修改完普通用户的密码后,还需要使用FLUSH PRIVILEGES语句重新加载权限表。
3)使用SET语句修改普通用户的密码
前面讲过使用SET不仅可以修改root用户密码,而且还可以修改普通用户密码,在修改普通用户密码时,还需要增加一个FOR子句,指定要修改哪个用户即可。
SET语句修改密码的语法格式如下:
SET PASSWORD FOR'username'@'hostname'=PASSWORD('new_password');
3.普通用户修改密码
普通用户也可以修改自己的密码,这样普通用户就不需要每次修改密码时都通知管理员,普通用户登录到MySQL服务器后,可以通过SET语句来设置自己的密码,SET语句的基本格式如下:
SET PASSWORD=PASSWORD('new_password');
SET语句修改普通用户密码时,和修改root用户是一样的,都需要使用PASSWORD()函数进行加密。
多学一招:如何解决root用户密码丢失
大家都知道root用户是超级管理员,具有很多的权限,因此该用户的密码一旦丢失,就会造成很大的麻烦,针对这种情况,MySQL提供了对应的处理机制,可以通过特殊方法登录到MySQL服务器,然后重新为root用户设置密码,具体步骤如下。
1. 停止MySQL服务
在“运行”对话框中,使用net命令停止MySQL服务,具体命令如下:
net stop mysql
2. 使用--skip-grant-tables启动MySQL服务
MySQL服务器中有一个skip-grant-tables选项,它可以停止MySQL的权限判断,也就是说任何用户都可以访问数据库,并且通过该选项也可以启动MySQL服务,在“运行”对话框中执行如下命令:
mysqld --skip-grant-tables
3. 登录MySQL服务器
重新开启一个“运行”对话框,在“运行”对话框中登录MySQL服务器,具体命令如下:
mysql -u root
4. 使用UPDATE语句设置root用户密码
MySQL登录成功后,可以通过UPDATE语句设置root用户的密码,具体语句如下:
UPDATE mysql.user SET Password=PASSWORD('itcast') WHERE User='root'
AND Host='localhost';
5. 加载权限表
MySQL密码设置完成后,还需重新加载权限表,让设置的密码生效,具体语句如下:
FLUSH PRIVILEGES;
上述步骤执行完,可以使用EXIT或\q命令退出服务器,然后使用新密码重新登录。至此,便完成了root用户的密码设置。
总结
每个软件都会对用户信息进行管理,MySQL也不例外,MySQL中的用户分为root用户和普通用户,root用户为超级管理员,具有所有权限,如创建用户、删除用户、管理用户等,而普通用户只拥有被赋予的某些权限。
MySQL中的用户都可以对数据库进行不同操作,因此管理好每个用户的密码是至关重要的,密码一旦丢失就需要及时进行修改。root用户具有最高的权限,不仅可以修改自己的密码,还可以修改普通用户的密码,而普通用户只能修改自己的密码。
作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。
- 点赞
- 收藏
- 关注作者
评论(0)