MySQL 改动用户password及重置rootpassword
为数据库用户改动password是DBA比較常见的工作之中的一个。对于MySQL用户账户的password改动,有几种不同的方式。推荐的方式使用加密函数来改动password。
本文主要描写叙述了通过几种不同的方式来改动用户password以及mysql root账户password丢失(重置rootpassword)的处理方法。
1、password改动的几种方法
a、能够在创建用户的时候指定password。以及直接使用grant创建用户的时候指定password。
对于已经存在的用户直接使用grant方式也能够改动password
例如以下: --演示版本号
root@localhost[(none)]> show variables like 'version%';
+-------------------------+------------------------------+
| Variable_name | Value |
+-------------------------+------------------------------+
| version | 5.5.37 |
| version_comment | MySQL Community Server (GPL) |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+------------------------------+ --以下我们使用grant方式创建一个新帐户fred,并设定password
root@localhost[(none)]> grant usage on *.* to 'fred'@'localhost' identified by 'fred';
Query OK, 0 rows affected (0.00 sec) --查看刚刚创建的账户
root@localhost[(none)]> select host,user,password from mysql.user where user='fred';
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | fred | *6C69D17939B2C1D04E17A96F9B29B284832979B7 |
+-----------+------+-------------------------------------------+ --以下能够成功登陆mysql
SZDB:~ # mysql -ufred -pfred fred@localhost[(none)]> b、使用set password方式来改动账户密码
--以下我们使用set password方式来设定密码
root@localhost[(none)]> set password for 'fred'@'localhost'=password('passwd');
Query OK, 0 rows affected (0.00 sec) root@localhost[(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec) --再次登陆时。之前的password已经失效。无法登陆
SZDB:~ # mysql -ufred -pfred
ERROR 1045 (28000): Access denied for user 'fred'@'localhost' (using password: YES) --以下使用新password登陆成功
SZDB:~ # mysql -ufred -ppasswd fred@localhost[(none)]> --检索数据库是否存在jack用户。例如以下password为null
root@localhost[(none)]> select host,user,password from mysql.user where user='jack';
+-----------+------+----------+
| host | user | password |
+-----------+------+----------+
| localhost | jack | |
+-----------+------+----------+ c、加密方式更新系统表user的password列
--我们尝试直接更新password列(不使用加密函数方式)
root@localhost[(none)]> update mysql.user set password='jack' where user='jack';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0 --因为直接使用明文。因此系统表user列password显示为明文
root@localhost[(none)]> select host,user,password from mysql.user where user='jack';
+-----------+------+----------+
| host | user | password |
+-----------+------+----------+
| localhost | jack | jack |
+-----------+------+----------+ --Author : Leshami
--Blog :http://blog.csdn.net/leshami root@localhost[(none)]> flush privileges;
Query OK, 0 rows affected (0.02 sec) --此时无法登陆
SZDB:~ # mysql -ujack -pjack -h localhost
ERROR 1045 (28000): Access denied for user 'jack'@'localhost' (using password: YES) --以下我们通过set方式来改动jack的password,提示找不到jack用户
root@localhost[(none)]> set password for 'jack'@'localhost'=password('jack');
ERROR 1133 (42000): Can't find any matching row in the user table --我们切换到mysql数据库下尝试,
root@localhost[(none)]> use mysql root@localhost[mysql]> set password for 'jack'@'localhost'=password('passwd'); --在mysql数据库下依然无法更新用户jack的密码
ERROR 1133 (42000): Can't find any matching row in the user table --以下我们尝试用password函数方式来更新password列
root@localhost[mysql]> update user set password=password('passwd') where user='jack'; --此方式更新成功
Query OK, 1 row affected (0.04 sec)
Rows matched: 1 Changed: 1 Warnings: 0 root@localhost[mysql]> select host,user,password from user where user='jack'; --能够看到密码已经变成了密文
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | jack | *59C70DA2F3E3A5BDF46B68F5C8B8F25762BCCEF0 |
+-----------+------+-------------------------------------------+ root@localhost[mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec) --此时登陆成功
robin@SZDB:~> mysql -ujack -ppasswd jack@localhost[(none)]>
2、重置root帐户password
--假定此时我们的root帐户忘记或遗失了password,如以下的演示,我们给出的是xxx,不能登陆到mysql(真实的password为mysql)
SZDB:~ # mysql -uroot -pmysql root@localhost[(none)]> SZDB:~ # mysql -uroot -pxxx #忘记password,此时无法正常登录
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) --首先停止mysqlserver
SZDB:~ # service mysql stop
Shutting down MySQL.. done --使用--skip-grant-tables选项跳过授权表验证,
SZDB:~ # mysqld --help --verbose #获取mysqld帮助信息 --skip-grant-tables Start without grant tables. This gives all users FULL
ACCESS to all tables. --使用--skip-grant-tables启动mysqlserver
SZDB:~ # mysqld --skip-grant-tables --user=mysql &
[1] 10209
SZDB:~ # ps -ef | grep mysql
mysql 10209 14240 4 13:52 pts/0 00:00:00 mysqld --skip-grant-tables --user=mysql
root 10229 14240 0 13:53 pts/0 00:00:00 grep mysql
SZDB:~ # mysql root@localhost[(none)]> select user,host,password from mysql.user where user='root';
+-------+-----------+-------------------------------------------+
| user | host | password |
+-------+-----------+-------------------------------------------+
| root | % | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
| root | 127.0.0.1 | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
+-------+-----------+-------------------------------------------+ --更新mysql账户password为NULL或设定为新password,注设定为空password时能够直接设置。无须使用加密函数,2者等同
root@localhost[(none)]> update mysql.user set password='' where user='root';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0 root@localhost[(none)]> select user,host,password from mysql.user where user='root';
+------+-----------+----------+
| user | host | password |
+------+-----------+----------+
| root | % | |
| root | 127.0.0.1 | |
+------+-----------+----------+ root@localhost[(none)]> exit
Bye #再次停止mysql数据库server
SZDB:~ # service mysql stop
Shutting down MySQL. done
[1]+ Done mysqld --skip-grant-tables --user=mysql
SZDB:~ # service mysql start
Starting MySQL.. done
SZDB:~ # mysql #重新启动后再次登陆。不再须要不论什么password root@localhost[(none)]>
3、小结
a、能够使用set password for 'user_name'@'host_name'=password('new_pwd')方式来改动密码 #更正@20141031
b、能够使用update系统表方式,update user set password=password('passwd') where user='user_name'
注: 对于user表password类,假设不用password函数的话。导致更新后无法登陆。
但假设将账户更新为空密码,能够使用加密函数。也能够不使用,2者等同。
c、也能够在用户创建后直接使用grant方式来更新用户密码。
d、相应root密码丢失或须要重置root密码的情形,须要使用系统选项--skip-grant-tables启动server后进行重置。
e、有关mysql权限及用户管理。创建用户时指定密码,请參考:MySQL 用户与权限管理
idkey=e61fdd22421b38cb5eef12db3c564ac0b5840f0f5cae4958e8b646740a79e680" target="_blank">
MySQL 改动用户password及重置rootpassword的更多相关文章
- mysql改动用户password
登录root用户 用root用户登录控制台. use mysql use mysql,mysql是mysql数据库自己主动创建的一个数据库. 改动user表的数据 update user set pa ...
- [加入用户]解决useradd 用户后没有加入用户Home文件夹的情况,Linux改变文件或文件夹的訪问权限命令,linux改动用户password,usermod的ysuum安装包。飞
usermod的yum安装包: shadow-utils 将nobody用户加入到nogroup 组: usermod -g nogroup nobody cat /etc/passwd|grep n ...
- VisualSVN Server 改动用户password
VisualSVN Server是很方便好用的SVNserver端软件.但有个问题,你在server端创建了usernamepassword后,用户无法自己改动password.据说VisualSVN ...
- Mysql—修改用户密码(重置密码)
1.登录mysql [root@localhost ~]# mysql -uroot -p123456 [root@localhost ~]# mysql -hlocalhost -uroot -p1 ...
- MediaWiki怎样重置用户password
今天.弄mediawiki因为一个周末另一夜没有睡觉导致忘记password了(欢迎吐槽~) 就開始折腾之旅,本来以为能够直接执行一条sql语句就都搞定了结果...依照网上大多数讲述的 我已经找不到原 ...
- linux上MySQL改动password的各种方法,yc整理
MySQL改动password的各种方法 整理了下面四种在MySQL中改动rootpassword的方法,可能对大家有所帮助! 方法1: 用SET PASSWORD命令 mysql -uroot my ...
- Mysql 用户root密码重置
Asterisk安装完成之后,接手新的Asterisk系统后不清楚Mysql的root账号密码. 重新重置mysql的root密码的方式 先查看mysql的版本号. 我的测试环境下的mysql版本为5 ...
- 转:linux环境mysql root用户密码重置
经常设置了mysql的root密码,就忘记掉了,这种事还是经常发生的.转自他人(http://www.osyunwei.com/archives/2014.html),权做笔记.linux环境下,解决 ...
- 详解MySQL的用户密码过期功能
这篇文章主要为大家详细介绍了MySQL的用户密码过期功能的相关资料,需要的朋友可以参考下 Payment Card Industry,即支付卡行业,PCI行业表示借记卡.信用卡.预付卡.电子钱包. ...
随机推荐
- hdu 4277
题目链接 #include <cstdio> //by-ACMer_xiaohao #include <cstring> #include <map> using ...
- Swift - 设置UIView的背景色和背景图片
1,使用UIColor的内置颜色设置背景色 1 2 var page = UIView() page.backgroundColor = UIColor.greenColor() 2,设置自定义颜色 ...
- NumPy简明教程
源地址:http://blog.csdn.net/sunny2038/article/details/9002531 http://blog.csdn.net/sunny2038/article/de ...
- java大数处理
比较两个数大小 import java.math.*; import java.util.*; public class Main { public static void main(String[] ...
- 一个发送邮件的C++库–jwsmtp
接收邮件的,暂时没搞定,不过在SF上找到了这个发送邮件的库文件.它提供了一个比较完整的类,可以简单的调用发送邮件.下面是作者提供的一个例子,不过由于连SMTP发邮件需要密码,所以代码我改了一下.// ...
- 图像编程学习笔记1——bmp文件结构处理与显示
文本内容转载自<数字图像处理编程入门>,代码为自己实现 1.1图和调色板的概念 如今Windows(3.x以及95,98,NT)系列已经成为绝大多数用户使用的操作系统,它比DOS成功的一个 ...
- MVVM Light须要注意的10个问题
MVVM Light须要注意的10个问题 从使用XAML技术基础開始(实际上并非非常久曾经).我便关注MVVM(Model – View – ViewModel)模式.偶然接触到MVVM Light不 ...
- linux下安装QT过程
说QT是linux下主要的图形开发工具一点都不过分,虽然诺基亚公司放弃Meego.遣散了Qt开发团队,但是它的各种商业.企业版本还是的到了很好的保护,linux下的开发工具集里还是经常看到它的身影,毕 ...
- GitLab 5.3 升级注意事项
最主要就是需要更新的Git.我的Ubuntu12.04通过apt-get install安装的git版本过低. 所以只能通过源代码安装. 参考下面的步骤: wget git-core.googleco ...
- 解决NGINX的WORDPRESS伪静态规则失效的问题
解决NGINX的WORDPRESS伪静态规则失效的问题 前两天搬到了EMSVPS的PR线路上,用上了最新的WDCP2.0管理面板,支持多用户管理(我们几个合租的VPS,最需要这个功能了),感觉很不错, ...