一、数据库安全策略
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!