主从mysql改root密码_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)]>

--检索数据库是否存在linuxidc用户,如下密码为null

root@localhost[(none)]> select host,user,password from mysql.user where user='linuxidc';

+-----------+------+----------+

| host      | user | password |

+-----------+------+----------+

| localhost | linuxidc |          |

+-----------+------+----------+

c、加密方式更新系统表user的password列

--我们尝试直接更新密码列(不使用加密函数方式)

root@localhost[(none)]> update mysql.user set password='linuxidc' where user='linuxidc';

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='linuxidc';

+-----------+------+----------+

| host      | user | password |

+-----------+------+----------+

| localhost | linuxidc | jack    |

+-----------+------+----------+

--Author : Leshami

--Blog  :http://www.linuxidc.com

root@localhost[(none)]> flush privileges;

Query OK, 0 rows affected (0.02 sec)

--此时无法登陆

SZDB:~ # mysql -ulinuxidc -pjack -h localhost

ERROR 1045 (28000): Access denied for user 'linuxidc'@'localhost' (using password: YES)

--下面我们通过set方式来修改linuxidc的密码,提示找不到linuxidc用户

root@localhost[(none)]> set password for 'linuxidc'@'localhost'=password('linuxidc');

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 'linuxidc'@'localhost'=password('passwd');  --在mysql数据库下依旧无法更新用户linuxidc的密码

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='linuxidc'; --此方式更新成功

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='linuxidc';    --可以看到密码已经变成了密文

+-----------+------+-------------------------------------------+

| host      | user | password                                  |

+-----------+------+-------------------------------------------+

| localhost | linuxidc | *59C70DA2F3E3A5BDF46B68F5C8B8F25762BCCEF0 |

+-----------+------+-------------------------------------------+

root@localhost[mysql]> flush privileges;

Query OK, 0 rows affected (0.00 sec)

--此时登陆成功

robin@SZDB:~> mysql -ulinuxidc -ppasswd

linuxidc@localhost[(none)]>

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

Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL http://www.linuxidc.com/Linux/2014-05/102351.htm

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

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 主从复制是一种非常重要且常用的数据同步方式,对于数据库管理员来说,保证主从同步的正常运行对于数据库的可靠性和稳定性都是非常重要的。当我们在使用 MySQL 主从同步时,如果发现 slave_io_running:no 的情况,那么意味着 MySQL 从服务器的 IO 线程停止了工作。 IO 线程是 MySQL 主从复制中非常重要的一个组件,它的作用是从主服务器上读取二进制数据,并将其传输到从服务器上。如果 IO 线程出现问题,那么意味着从服务器无法从主服务器获取新的数据,从而导致从服务器无法同步主服务器的数据。 在出现 slave_io_running:no 的情况时,我们需要立即查找 IO 线程出现问题的原因,并进行解决。以下是常见的 IO 线程故障原因及对应解决方案: 1. 网络问题。如果主服务器和从服务器之间的网络出现了问题,那么 IO 线程就无法正常工作。我们可以通过检查网络连接以及网络质量来解决这个问题。 2. DNS 解析错误。如果主服务器和从服务器之间使用的是主机名进行通信,那么可能出现 DNS 解析错误的情况。我们需要检查主机名是否正确,以及 DNS 解析是否正常。 3. 权限问题。如果从服务器的用户权限不正确,那么也可能会导致 IO 线程无法正常工作。我们需要检查从服务器的用户权限是否足够,以及是否正确配置了主从服务器之间的连接信息。 4. 数据库配置问题。如果从服务器的数据库配置不正确,那么也可能会导致 IO 线程无法正常工作。我们需要检查从服务器的数据库配置是否正确,并根据需要进行更。 总的来说,当出现 slave_io_running:no 的情况时,我们需要立即对问题进行排查和解决,以便尽快恢复 MySQL 主从同步的正常运行。在排查问题过程中,我们需要充分了解 MySQL 主从复制的工作原理,熟悉常见的故障原因,并加强对 MySQL 数据库的日常维护和管理工作,以提高数据库的可靠性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值