mysql用户登录报错1045的排查过程(linux版)

某天登录自己的mysql数据库突然报错:1045    Access denied for user 'root'@'***' (using password:YES)

分析:

1.用户密码做了修改,登录时候用的旧密码,密码错误

2.登录用户不在mysql的user表里

解决思路:

1.linux上进入mysql进入mysql的database,查看user表用户信息,看是否用户缺失

2.如果用户存在,那么更新下密码

执行:

没有密码登录mysql的方式

1、找到MySQL的配置文件my.cnf

2、在[mysqld]下增加一行skip-grant-tables

[mysqld]
datadir=/usr/local/mysql/data
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=4000
innodb_file_per_table=1
#表名大小写不明感,敏感为
#lower_case_table_names=1
max_allowed_packet=400M
skip-grant-tables

3、重启数据库service mysqld restart

 

 

4.

登录:

方式1:

mysql -u root -p输入后跳过密码登录

方式2:navicat登录

 

排查:mysql空间的user表没有root账户,所以在user表加入root账户即可

方式1:linux下直接创建

1)进入mysql

2)user mysql;

3)insert into mysql.user(Host,User,Password) values(“%”,”username”,password(“1234”));
4) //刷新系统权限表
flush privileges;

方式2:navicat里user表insert一条记录再修改内容

创建root账户(在navicat操作,复制一个用户,复制为为insert语句,修改username为root,执行)

给新建root更新字段

update user set Host='%',
select_priv='y',
 insert_priv='y',
update_priv='y',
Alter_priv='y',
delete_priv='y',
create_priv='y',
drop_priv='y',
reload_priv='y',
shutdown_priv='y',
Process_priv='y',
file_priv='y',
grant_priv='y',
References_priv='y',
index_priv='y',
create_user_priv='y',
show_db_priv='y',
super_priv='y',
create_tmp_table_priv='y',
Lock_tables_priv='y',
execute_priv='y',
repl_slave_priv='y',
repl_client_priv='y',
create_view_priv='y',
show_view_priv='y',
create_routine_priv='y',
alter_routine_priv='y',
create_user_priv='y' 
where user='root';

commit;

linux下修改密码:update user set password=password("修改后的密码") where user="root";   //修改数据库的密码

回复数据:

1.去掉my.cnf加入的skip-grant-tables

2.重启mysql

3.尝试用新建的用户密码登录,登录成功

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值