mysql8忘记密码
mysql8忘记密码解决方案
刚初始化好mysql时可能无法获取到mysql的密码,或者忘记了mysql的密码,可通过先将mysql设置为无密码登录后进入mysql命令行修改密码。
无密码登录
进入到mysql的配置文件里,windows下一般为my.ini,linux下为my.cnf,添加skip-grant-tables这一条语句,示例如下:
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
user=mysql
socket=/tmp/mysql.sock
basedir=/home/mysql/mysql
datadir=/home/mysql/mysql/data
log-error=error.log
transaction_isolation = READ-COMMITTED
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
lower_case_table_names = 1
# 这就是设置无密码登录的语句
skip-grant-tables
修改mysql原始密码:
进入到mysql的bin目录下,执行mysql进入命令行:
# 直接执行mysql进入命令行
mysql
刷新权限:flush privileges;
修改密码:alter user 'root'@'localhost' identified by '密码内容';
注意:mysql8的密码有限定要求,不能使用过于简单的密码。这里只修改了root用户在localhost登录环境下的密码,远程登录时密码还是初始密码。‘用户名’@'作用范围(%代表所有)'为用户的使用格式。
测试密码修改情况:
先要将my.cnf里的skip-grant-tables注释掉,再进入到mysql下的bin目录执行命令:
# 输入密码登录
./mysql -uroot -p
https://blog.csdn.net/qq_25856179/article/details/118661396
或
mysqld --console --skip-grant-tables --shared-memory
先修改root的密码为空。特别注意authentication_string=’'的等号后面是一对单引号。
修改命令为:UPDATE mysql.user SET authentication_string='' WHERE user='root';
flush privileges;
https://blog.csdn.net/qq_34552189/article/details/123956848