MySQL 修改用户密码及重置root密码


为数据库用户修改密码是DBA比较常见的工作之一。对于MySQL用户账户的密码修改,有几种不同的方式,推荐的方式使用加密函数来修改密码。本文主要描述了通过几种不同的方式来修改用户密码以及mysql root账户密码丢失(重置root密码)的处理方法。

1、密码修改的几种方法

a、可以在创建用户的时候指定密码,以及直接使用grant创建用户的时候指定密码。
  对于已经存在的用户直接使用grant方式也可以修改密码
如下:

--演示版本
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,并设定密码
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)

--再次登陆时,之前的密码已经失效,无法登陆
SZDB:~ # mysql -ufred -pfred
ERROR 1045 (28000): Access denied for user 'fred'@'localhost' (using password: YES)

--下面使用新密码登陆成功
SZDB:~ # mysql -ufred -ppasswd

fred@localhost[(none)]>

--检索数据库是否存在bkjia用户,如下密码为null
root@localhost[(none)]> select host,user,password from mysql.user where user='bkjia';
+-----------+------+----------+
| host      | user | password |
+-----------+------+----------+
| localhost | bkjia |          |
+-----------+------+----------+

c、加密方式更新系统表user的password列
--我们尝试直接更新密码列(不使用加密函数方式)
root@localhost[(none)]> update mysql.user set password='bkjia' where user='bkjia';
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='bkjia';
+-----------+------+----------+
| host      | user | password |
+-----------+------+----------+
| localhost | bkjia | jack    |
+-----------+------+----------+

--Author : Leshami
--Blog  :

《MySQL权威指南(原书第2版)》清晰中文扫描版 PDF

Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL

Ubuntu 14.04下搭建MySQL主从服务器

Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群

Ubuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb

MySQL-5.5.38通用二进制安装

--------------------------------------分割线 --------------------------------------

更多详情见请继续阅读下一页的精彩内容:

  • 1
  • 2
  • 下一页

相关内容