一、管理员密码设置、修改与重置¶
1.1 设置管理员密码¶
1.1.1 自动生成临时密码¶
1、环境准备
[root@master ~]# /etc/init.d/mysqld stop
[root@master ~]# rm -rf /data/3306/data/*
[root@master ~]# mv /etc/my.cnf /tmp/
2、安全模式初始化数据库,观察到自动生成临时密码;tdUth</o7aW
[root@master ~]# mysqld --initialize --user=mysql --datadir=/data/3306/data --basedir=/usr/local/mysql
2025-02-11T02:11:49.008594Z 0 [System] [MY-013169] [Server] /usr/local/mysql-8.0.26-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.26) initializing of server in progress as process 2818
2025-02-11T02:11:49.014214Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2025-02-11T02:11:49.268001Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2025-02-11T02:11:49.718166Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
2025-02-11T02:11:49.718362Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
2025-02-11T02:11:49.773389Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ;tdUth</o7aW
3、启动数据库
[root@master ~]# mv /tmp/my.cnf /etc/
[root@master ~]# /etc/init.d/mysqld start
4、使用临时密码登录数据库,观察到使用临时密码登录数据库无法执行相关命令。(一般不采用这种方法来设置管理员密码)
[root@master ~]# mysql -uroot -p
Enter password: ;tdUth</o7aW
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
1.1.2 手工设置管理员密码¶
1、环境准备
[root@master ~]# /etc/init.d/mysqld stop
[root@master ~]# rm -rf /data/3306/data/*
[root@master ~]# mv /etc/my.cnf /tmp/
2、安全模式初始化数据库,观察到自动生成临时密码;tdUth</o7aW
[root@master ~]# mysqld --initialize-insecure --user=mysql --datadir=/data/3306/data --basedir=/usr/local/mysql
3、启动数据库
[root@master ~]# mv /tmp/my.cnf /etc/
[root@master ~]# /etc/init.d/mysqld start
4、手工设置管理员密码
(1)Mysql8.0版本
方式一:命令行方式
[root@master ~]# mysqladmin -uroot password '123456'
进行登录测试
[root@master ~]# mysql -uroot -p123456
mysql> quit
方式二:SQL方式
mysql> alter user root@'localhost' identified by '123456';
进行登录测试
[root@master ~]# mysql -uroot -p
Enter password: 123456
mysql> quit
(2)Mysql5.7版本
方式一:命令行方式
[root@master ~]# mysqladmin -uroot password '123456'
进行登录测试
[root@master ~]# mysql -uroot -p123456
mysql> quit
方式二:SQL方式
mysql> update mysql.user set authentication_string=PASSWORD('123456') where user='root' and host='localhost';
mysql> flush privileges;
进行登录测试
[root@master ~]# mysql -uroot -p
Enter password: 123456
mysql> quit
(3)Mysql5.6版本
方式一:命令行方式
[root@master ~]# mysqladmin -uroot password '123456'
进行登录测试
[root@master ~]# mysql -uroot -p123456
mysql> quit
方式二:SQL方式
mysql> set password for 'root'@'localhost'=PASSWORD('123456');
mysql> flush privileges;
进行登录测试
[root@master ~]# mysql -uroot -p
Enter password: 123456
mysql> quit
1.2 修改管理员密码¶
1.2.1 Mysql8.0版本修改管理员密码¶
方式一:命令行方式
[root@master ~]# mysqladmin -uroot password '123456'
进行登录测试
[root@master ~]# mysql -uroot -p123456
mysql> quit
方式二:SQL方式
mysql> alter user root@'localhost' identified by '123456';
进行登录测试
[root@master ~]# mysql -uroot -p
Enter password: 123456
mysql> quit
1.2.2 Mysql5.7版本修改管理员密码¶
方式一:命令行方式
[root@master ~]# mysqladmin -uroot password '123456'
进行登录测试
[root@master ~]# mysql -uroot -p123456
mysql> quit
方式二:SQL方式
mysql> update mysql.user set authentication_string=PASSWORD('123456') where user='root' and host='localhost';
mysql> flush privileges;
进行登录测试
[root@master ~]# mysql -uroot -p
Enter password: 123456
mysql> quit
1.2.3 Mysql5.6版本修改管理员密码¶
方式一:命令行方式
[root@master ~]# mysqladmin -uroot password '123456'
进行登录测试
[root@master ~]# mysql -uroot -p123456
mysql> quit
方式二:SQL方式
mysql> set password for 'root'@'localhost'=PASSWORD('123456');
mysql> flush privileges;
进行登录测试
[root@master ~]# mysql -uroot -p
Enter password: 123456
mysql> quit
1.3 重置管理员密码¶
解决处理方法:将数据库重启并进入数据库安全模式(不加载验证授权表模式)
1、停止数据库服务,并检查数据库服务是否停止
停止数据库服务方式一:命令行方式
[root@master ~]# service mysql stop
停止数据库服务方式二:命令行方式
[root@master ~]# /etc/init.d/mysqld stop
停止数据库服务方式三:SQL方式
mysql> shutdown;
2、重新启动数据库服务,并设置启动方式为忽略授权表启动方式
[root@master ~]# mysqld_safe --skip-grant-tables --skip-networking &
相关参数说明:
- skip-grant-tables 表示忽略授权表启动
- skip-networking 忽略网络通讯方式启动
进行测试服务是否启动
[root@master ~]# ps -ef | grep mysql
3、采用免密码方式登录数据库系统中,并重置root用户密码信息
(1)进入数据库
root@master ~]# mysql -uroot
(2) 先将数据库服务授权表加载到内存中,也可以将内存中修改的授权信息存入到磁盘中
mysql> flush privileges;
(3) 修改数据库服务用户密码信息
mysql> alter user root@'localhost' identified by '123456';
4、重新启动数据库服务程序
(1) 杀死已经运行的数据库服务进程信息
[root@master ~]# pkill mysqld
[root@master ~]# ps -ef|grep mysql
(2) 重新启动数据库服务
#方式一
[root@master ~]# service mysql start
#方式二
[root@master ~]# /etc/init.d/mysqld start
(3) 重新登录进行测试
[root@master ~]# mysql -uroot -p123456
二、数据库初始化方式说明¶
不同数据库服务版本安装初始化差异说明:
| 版本信息 | 命令信息 | 初始化操作参数 | 备注说明 |
|---|---|---|---|
| 5.6 | mysql_install_db | 初始化的命令不一致,参数相同(无管理员密码) | |
| 5.7 8.0 | mysqld | --initialize-insecure | 表示不安全方式初始化(无管理员密码) |
| --initialize | 表示安全方式初始化(有随机默认管理员密码) |
安全方式初始化特性:
将会生成临时密码(12位密码 需要满足4种复杂度),必须在首次登录数据库时改掉,才能正常管理数据库;
使用安全模式初始化数据库后,需要利用临时密码登录数据库服务,并设置管理员用户密码信息(如果不修改设置管理员用户密码,使用临时密码只是能登录数据库,但是无法管理数据库)
mysql > alter user root@'localhost' identified by '123456';
5.5 5.6 数据库初始化操作:
[root@master ~]# cd /usr/local
[root@master local]# ./mysql56/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql56 --datadir=/data/3356/data
8.0 5.7 数据库初始化操作:
[root@master ~]# cd /usr/local
[root@master local]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data