1.问题产生的过程,刚开始安装完设置了root用户的账号和密码都是可以正常进行登录的,但是我进行了数据导入,之后进行了退出。重启了docker就出现了这个问题, ERROR 1045 (28000)。
root@344088daee8a:/# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
2.解决方式,因为docker安装的时候映射了conf.d目录
root@344088daee8a:/etc/mysql# ls
conf.d my.cnf my.cnf.fallback mysql.cnf mysql.conf.d
- 这个时候修改 conf.d里面的my.cnf是无效的,正确的修改方式为修改mysql.conf.d下面的
- mysqld.cnf
[mysqld]
skip-grant-tables
- 修改之后重启docker
- 进入不需要密码就可以进行登录
- flush privileges 刷新权限
- ALTER USER root@localhost IDENTIFIED BY ‘r0ot’;
[root@localhost conf]# docker restart 344
344
[root@localhost conf]# docker exec -it 344 bash
root@344088daee8a:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> ALTER USER root@localhost IDENTIFIED BY 'r0ot';
Query OK, 0 rows affected (0.00 sec)
mysql> exit
3.然后去除配置,重启docker
skip-grant-tables
[root@localhost conf]# docker restart 344
344
[root@localhost conf]# docker exec -it 344 bash
root@344088daee8a:/# mysql -uroot -p
在这里插入代码片
4.如果出现Host is not allowed to connect to this MySQL server解决方法
use mysql;
update user set host = '%' where user = 'root'
FLUSH PRIVILEGES;
执行之后就可以正常链接