docker中修改mysql登录密码不成功解决方法

本文详细记录了在Docker环境下修改MySQL登录密码遇到的问题及解决方案。常见教程中将`HOST`设置为`localhost`导致外部连接密码未更新,正确做法是设置为`%`。步骤包括使用SQLyog或Navicat登录,执行SQL语句更新`authentication_string`(部分旧版本需改为`password`),并注意权限刷新。确保内外部都能用新密码登录。

点击进入我的个人博客
我在使用网上的教程修改docker中修改mysql登录密码时出现了,外部连接照样是用原密码登陆,而容器内部使用新密码登陆的情况,坑了我几个小时,特此出以下超级简单的修改docker修改mysql登录密码教程

1.使用SQLyog或者Navicat登录mysql

我这里使用的是SQLyog登录。

2.登录之后复制以下语句执行

这里passworduser需要自己指定host为%,很多网上的教程都是localhost,就是因为这个导致我一直出问题,总之我这里如果为localhost修改的是本地的密码,就是在进入到mysql容器里面登录时用的密码,而你在外部连接时的密码照样没修改。不信你用SQLyog连接试试,看用原密码登陆还是新密码~

USE mysql;
UPDATE USER SET authentication_string=PASSWORD('123') WHERE USER='root' AND HOST='%';
FLUSH PRIVILEGES;

这里还有个注意的点是authentication_string在某些低版本的数据库要替换为password

在这里插入图片描述

### 修改Docker环境中MySQL密码 为了在Docker容器中更MySQL数据库密码,需遵循一系列特定操作来确保安全性和功能性。当通过Docker部署MySQL实例时,默认情况下会设置root用户的初始密码为空或由环境变量定义。 #### 进入MySQL容器并访问命令行界面 首先,确认运行中的MySQL容器名称或ID: ```bash docker ps ``` 使用`exec`命令进入正在运行的MySQL容器内部,并启动MySQL客户端工具连接至服务器: ```bash docker exec -it <container_name_or_id> mysql -uroot -p ``` 这里的`<container_name_or_id>`应替换为实际的容器名或ID[^2]。 #### 更用户密码 一旦成功登录MySQL shell,在这里可以通过执行SQL语句更新目标账户的密码。对于版本8.0及以上来说,推荐采用如下方法密码: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword'; FLUSH PRIVILEGES; ``` 上述命令将把名为`root`的本地主机上的用户的身份验证机制更为`mysql_native_password`,并将新密码设为`newpassword`。请注意替换成自己的强密码[^1]。 如果遇到权限足的问题,则可能是因为当前使用的是具有足够权限的账号来进行此变更。此时应该尝试以具备更高权限的角色重新登录再试一次。 #### 验证更后的状态 退出MySQL Shell后再次尝试用新的凭证登陆测试是否生效: ```bash exit; # 从 MySQL 客户端退出 docker exec -it <container_name_or_id> bash -c "mysql -u root -p" ``` 输入刚才设定的新密码完成认证过程即可证明修改成功
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值