Docker安装mysql报错 ERROR 1045 (28000): Access denied for user

本文介绍了一种常见的MySQL启动错误1045的解决方案,通过在配置文件中添加skip-grant-tables参数,重启数据库,更新root用户的密码为空,再重新设置root密码并授权,最终解决权限拒绝的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一进入mysql报错:1045 (28000)错误:

”Access denied for user ‘root’@’localhost’ (using password: YES)”

启动容器:

docker run --name mysql5.6 -p 3306:3306 -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

处理该错误的做法
1.在 /usr/local/mysql/conf.d目录下增加文件: my.cnf,并编辑

[mysqld]
skip-grant-tables

2.重启mysql

docker restart mysql5.6

3.进入docker容器内部

docker exec -it mysql5.6 bash

4.登录mysql

mysql -uroot -p

5.设置root密码为空,注意root密码是加密的

use mysql;

select user,authentication_string,host from user;

更新为空

update user set authentication_string='' where user='root';

flush privileges;

6 退出mysql,把第一步的skip-grant-tables注释。再重启mysql
7 使用 root用户,登录;
8修改root密码

alter user 'root'@'localhost' IDENTIFIED BY 'rootroot';

alter user 'root'@'%' IDENTIFIED BY 'rootroot';

flush privileges;

9.附加授权

GRANT all ON . TO 'root'@'%' IDENTIFIED BY 'rootroot' ;

flush privileges;
这个错误信息表明,Docker在尝试以root用户身份连接到MySQL数据库时,遇到了访问被拒绝的问题。这个问题通常是由于以下几个原因造成的: 1. 用户名或密码错误:请确保你提供的MySQL用户名和密码是正确的。 2. 用户权限不足:root用户可能没有从远程主机连接的权限。你可能需要为root用户授予远程访问权限,或者创建一个新的用户并赋予适当的权限。 3. MySQL配置问题:MySQL的配置文件(通常是my.cnf)可能设置了"bind-address",限制了只能从特定IP地址连接。 4. 防火墙设置:服务器的防火墙可能阻止了MySQL的默认端口(3306)。 5. MySQL服务未运行:确保MySQL服务正在运行。 要解决这个问题,你可以尝试以下步骤: 1. 验证MySQL凭据:在本地机器上尝试使用相同的用户名和密码登录MySQL。 2. 检查MySQL用户权限:登录MySQL后,运行以下命令来授予root用户远程访问权限: ```sql GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 3. 检查MySQL配置文件:编辑my.cnf文件,确保"bind-address"设置为0.0.0.0或服务器的IP地址,而不是127.0.0.1。 4. 检查防火墙设置:确保服务器的防火墙允许MySQL的默认端口(3306)。你可以使用以下命令来开放端口: ``` sudo ufw allow 3306 ``` 5. 重启MySQL服务:在进行上述更改后,重启MySQL服务以应用更改: ``` sudo service mysql restart ``` 6. 测试连接:使用Docker命令再次尝试连接MySQL,检查问题是否已解决。 如果问题仍然存在,你可能需要查看MySQL的错误日志以获取更多详细信息。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值