一、管理员密码设置、修改与重置

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