码迷,mamicode.com
首页 > 数据库 > 详细

Linux下修改Mysql的用户(root)的密码

时间:2017-09-14 00:33:37      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:yun   end   startup   read   用户   inpu   acl   reading   删除   

一、拥有原来的myqlroot的密码;
方法一:

在mysql系统外,使用mysqladmin

# mysqladmin -u root -p password "test123"

Enter password: 【输入原来的密码】

 

方法二:

通过登录mysql系统,

mysql> use mysql;

mysql> update user set password=password("oracle") where user=‘root‘;

mysql> flush privileges;

mysql> exit;    

  

方法三: 用SET PASSWORD命令 

首先登录MySQL。 

格式:mysql> set password for ‘用户名‘@‘localhost‘ = password(‘新密码‘); 

例子:mysql> set password for ‘root‘@‘localhost‘ = password(‘123‘); 

 

 

 


二、忘记原来的myqlroot的密码;

1、skip-grant-tables

 

我们常用的方法是使用skip-grant-tables选项,mysqld server启动之后并不使用权限系统(privilege system)。用户不需要任何账号、不受任何限制的访问数据库中所有数据。为了安全起见,通常加上skip-networking,mysqld不侦听任何TCP/IP连接请求。操作过程如下,

 

1)修改my.cnf配置文件,在mysqld选项中添加skip-grant-tables和skip-networking。

 

2)再重启mysqld server。

 

3)通过sql语句修改mysql.user表中存储密码。执行flush privileges,重新启用mysql权限系统。

 

UPDATE mysql.user SET password=PASSWORD(‘newpwd‘)WHERE user=‘root‘;

 

FLUSH PRIVILEGES;

 

4)删除或者注释配置文件中skip-grant-tables和skip-networking的参数选项。如果使用skip-networking,则需要再次重启mysqld。因为skip-networking不是系统变量,只是mysqld的参数选项,而不能通过系统变量动态进行设置。如果没有适用skip-networking,只需要执行flush privileges就可以使权限系统重新生效。

 

2. --init-file

 

mysqld_safe可以使–init-file参数选项来执行重新设定密码的sql语句。

 

1)新建一个初始化文件,如/tmp/initfile,文件内容为上面修改密码的sql语句。

 

UPDATE mysql.user SET Password=PASSWORD(‘newpwd‘) WHERE User=‘root‘;

 

FLUSH PRIVILEGES;

 

2)关闭mysqld服务进程。

 

3)使用mysqld_safe启动mysqld;

 

mysqld_safe --init-file=/home/me/mysql-init &

上面的两种方法是在忘记root密码情况下重新设置密码的方法,可以发现都需要重启mysqld服务。很多人都是使用第一种进行重置root密码,但是比较推荐的做法反而是第二种,即安全有快捷简单。

 

 

 

3、不重启mysqld的方法

 

1、首先得有一个可以拥有修改权限的mysql数据库账号,当前的mysql实例账号(较低权限的账号,比如可以修改test数据库)或者其他相同版本实例的账号。把data/mysql目录下面的user表相关的文件复制到data/test目录下面。

 

[root@localhost mysql]# cp mysql/user.* test/

[root@localhost mysql]# chown mysql.mysql test/user.*

 

2、使用另一个较低权限的账号链接数据库,设置test数据库中的user存储的密码数据。

[root@localhost mysql]# mysql -utest -p12345

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 17

Server version: 5.5.25a-log Source distribution

 

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 respective

owners.

 

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

 

mysql> use test

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

Database changed

mysql> update user set password=password(‘yayun‘) where user=‘root‘;

Query OK, 0 rows affected (0.00 sec)

Rows matched: 5  Changed: 0  Warnings: 0

 

mysql>

 

3、把修改后的user.MYD和user.MYI复制到mysql目录下,记得备份之前的文件。

mv mysql/user.MYD mysql/user.MYD.bak

mv mysql/user.MYI mysql/user.MYI.bak

cp test/user.MY* mysql/

chown mysql.mysql mysql/user.*

 

4、查找mysql进程号,并且发送SIGHUP信号,重新加载权限表。

 

[root@localhost mysql]# pgrep -n mysql

2184

[root@localhost mysql]#

[root@localhost mysql]# kill -SIGHUP 2184

 

5.登陆测试

[root@localhost mysql]# mysql -uroot -pyayun

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 20

Server version: 5.5.25a-log Source distribution

 

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 respective

owners.

 

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

 

mysql>

 

 

 

Linux下修改Mysql的用户(root)的密码

标签:yun   end   startup   read   用户   inpu   acl   reading   删除   

原文地址:http://www.cnblogs.com/liang545621/p/7518334.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!