MySQL root密码管理实战:初始化、修改与重置

来自AI助手的总结
介绍MySQL管理员密码的设置、修改、重置及初始化方法
MySQL root密码管理实战:初始化、修改与重置

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

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 手工设置管理员密码

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 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 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 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

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容