MySQL用户密码管理

一、数据库安全策略

MySQL在安装过后,默认的root管理员密码为空,这是不安全的,我们在单实例安装后做了一些操作,如:

  • 为root用户设置密码
  • 删除一些无用的账户
  • 删除默认存在的test数据库
  • 添加了system管理员,其权限与root用户等价

(一)为管理员设置密码

1、单实例

# 给无密码用户设置密码
[root@hadoop-slave1 /]# mysqladmin -uroot password'123456'

2、多实例

[root@hadoop-slave1 /]# mysqladmin -uroot -p'123456' password'123456' -S /data/3307/mysql.sock 

上述命令均是在linux命令行,而非MySQL命令行。

(二)修改管理员密码

1、命令行外修改法(法一)

[root@hadoop-slave1 /]# mysqladmin -uroot -p'123456' password'123456'

2、sql语句修改法(法二)

mysql> update mysql.user set password=password("123456") where user='root' and host='localhost';

这种方法是和密码丢失后,通过--skip-grant-table启动的数据库服务修改密码。

注意:

  • 必须指定where语句
  • 必须指定password方法来进行加密

3、password修改(法三)

数据库启动后,root密码为空,马上为其设置密码:

mysql> set password=password('123456');

这种方法不适合--skip-grant-table方式修改密码。

二、修改丢失的数据库密码 

(一)单实例修改丢失的数据库密码 

1、停止数据库服务

首先应该停止正在运行的数据库服务:

[root@hadoop-slave1 /]# /etc/init.d/mysqld stop
Shutting down MySQL. SUCCESS! 

2、忽略授权方式启动

密码已经丢失,使用--skip-grant-table忽略授权方式登录,无需密码:

[root@hadoop-slave1 /]# mysqld_safe --skip-grant-table --user=mysql &

3、登录

此时,已经无需密码了,直接登录即可:

[root@hadoop-slave1 ~]# mysql -uroot -p

4、修改root密码

修改root密码为新密码:

mysql> update mysql.user set password=password("123456") where user='root' and host='localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

5、重启服务

首先关闭现有服务,然后重启:

# 关闭现有服务
[root@hadoop-slave1 ~]# mysqladmin -uroot -p123456 shutdown

# 重启服务
[root@hadoop-slave1 ~]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS! 

然后就可以使用新密码进行登录。

(二)多实例修改丢失的数据库密码 

1、停止数据库服务

首先应该停止正在运行的数据库服务:

[root@hadoop-slave1 /]# killall mysqld 

2、忽略授权方式启动

密码已经丢失,使用--skip-grant-table忽略授权方式登录,无需密码:

[root@hadoop-slave1 /]# mysqld_safe --defaults=/data/3307/my.cnf --skip-grant-table --user=mysql &

3、登录

此时,已经无需密码了,直接登录即可:

[root@hadoop-slave1 ~]# mysql -uroot -p -S /data/3307/mysql.sock

4、修改root密码

修改root密码为新密码:

mysql> update mysql.user set password=password("123456") where user='root' and host='localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

5、重启服务

首先关闭现有服务,然后重启:

# 关闭现有服务
[root@hadoop-slave1 ~]# killall mysqld
# 重启服务
[root@hadoop-slave1 ~]# /data/3307/mysql start
Starting MySQL.. SUCCESS! 
原文地址:https://www.cnblogs.com/shenjianping/p/13515117.html