在容器中登录Mysql

文章介绍了如何使用dockerexec-it命令进入正在运行的MySQL容器,并通过mysql-uusername-ppassword命令链接到MySQL服务,强调了-it参数的作用以及bash如何保持终端连接。

1、进入mysql容器

docker exec -it [mysql的容器名] bash

 exec: Run a command in a running container(在运行的容器中运行命令)

-it : 目前的理解浅薄,就是要等在容器内的命令执行完毕才会出来到当前操作; 没有-it的加 就相当于在容器内执行一下命令,不等容器内部是否执行完毕直接出来,而我们看见的他在上面是因为容器内的执行快,(行动派可以试试在里面写个循环制造时间验证)

那么就出来了 -it ....bash 的组合

-it ....bash:上面说到在加上-it 会等容器内的操作执行完毕,而bash 是打开容器内的一个终端近程,又因为it的等待 所以就会一直以终端连接的方式停留在容器内部,下面展示效果:
​​​​​​​ 

2、链接mysql

mysql -u username -p password

https://www.cnblogs.com/mayyan/p/16566274.html

<think>我们参考了多个站内引用,其中提供了几种在Docker容器中设置MySQL密码的方法。下面我将整理出清晰、可靠的步骤,给出相关注意事项。 ### 方法1:启动容器时设置密码(推荐) 这是最简单安全的方式,通过环境变量`MYSQL_ROOT_PASSWORD`在启动容器时直接设置密码。 ```bash docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag ``` - `some-mysql`:容器名称(可自定义) - `my-secret-pw`:设置的root用户密码 - `mysql:tag`:镜像标签(如`mysql:5.7`或`mysql:8.0`) ### 方法2:进入容器修改密码(适用于已运行容器) 若容器已启动但需修改密码,可执行以下步骤: 1. **进入容器**: ```bash docker exec -it <容器ID或名称> bash ``` 2. **登录MySQL**(使用原密码): ```bash mysql -u root -p ``` 3. **执行SQL修改密码**(以修改root本地登录密码为例): ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; ``` 若需允许远程登录,还需修改`'root'@'%'`的密码: ```sql ALTER USER 'root'@'%' IDENTIFIED BY 'new_password'; ``` 4. **刷新权限**: ```sql FLUSH PRIVILEGES; ``` 5. 退出MySQL重启容器使更改生效。 ### 方法3:忘记密码时重置(危险,需谨慎) 若忘记密码且无法登录,需临时跳过权限验证重置密码(引用[3]方法): 1. **进入容器**: ```bash docker exec -it <容器ID> bash ``` 2. **在MySQL配置文件中添加跳过权限表**: ```bash echo "skip-grant-tables" >> /etc/mysql/conf.d/docker.cnf ``` > ⚠️ 警告:此操作会禁用权限验证,存在安全风险,操作后务必立即恢复。 3. **退出重启容器**: ```bash exit docker restart <容器ID> ``` 4. **重新进入容器免密登录MySQL**: ```bash docker exec -it <容器ID> bash mysql -uroot # 无需密码 ``` 5. **更新root密码**: ```sql FLUSH PRIVILEGES; -- 先刷新权限 ALTER USER 'root'@'%' IDENTIFIED BY 'new_password'; -- 修改远程登录密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; -- 修改本地登录密码 ``` 6. **移除跳过权限配置**: - 编辑`/etc/mysql/conf.d/docker.cnf`,删除`skip-grant-tables`。 - 或使用命令:`sed -i "s/skip-grant-tables//" /etc/mysql/conf.d/docker.cnf` 7. **重启容器**: ```bash docker restart <容器ID> ``` ### 注意事项 1. **安全建议**: - 避免使用方法3,除非必要。若必须使用,操作后立即恢复配置重启。 - 生产环境推荐使用方法1,在启动时设置强密码。 2. **权限问题**: - 修改密码后,确保`root@localhost`和`root@%`的密码同步更新(根据访问需求)。 3. **持久化存储**: - 使用`-v`挂载数据卷,避免容器重启后数据丢失。例如: ```bash docker run -v /my/datadir:/var/lib/mysql ... ``` ### 总结 - 新容器启动:使用`-e MYSQL_ROOT_PASSWORD=密码`最安全。 - 修改已知密码:登录MySQL后用`ALTER USER`命令。 - 重置忘记密码:临时启用`skip-grant-tables`(高风险操作)。 --- 相关问题: 1. 如何在启动Docker容器时指定MySQL的默认字符集? 2. 如何为Docker中的MySQL配置持久化数据存储? 3. 如何通过Docker Compose部署MySQL设置密码? </think>### 如何在Docker容器中设置MySQL密码 #### ✅ 推荐方法:启动容器时直接设置密码(安全便捷) 1. **创建容器时指定密码** 通过`-e MYSQL_ROOT_PASSWORD`环境变量直接设置: ```bash docker run --name mysql-container \ -e MYSQL_ROOT_PASSWORD=YourNewPassword \ # ✨ 设置root密码 -d mysql:5.7 # 指定镜像版本 ``` > 📌 优势:无需进入容器,启动即生效(引用[2][3]) --- #### ✅ 修改已运行容器的密码 **方法1:通过MySQL命令行修改** 1. 进入容器: ```bash docker exec -it <容器ID> bash # 引用[1][5] ``` 2. 登录MySQL修改密码: ```sql mysql -u root -p # 输入原密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword'; # 引用[4] ALTER USER 'root'@'%' IDENTIFIED BY 'NewPassword'; # 远程访问密码 FLUSH PRIVILEGES; # 刷新权限 ``` **方法2:临时跳过权限验证(适用于忘记密码)** ```bash # 1. 进入容器添加跳过验证配置(危险操作) echo "skip-grant-tables" >> /etc/mysql/conf.d/docker.cnf # 引用[3] # 2. 重启容器 docker restart <容器ID> # 3. 免密登录修改密码 docker exec -it <容器ID> mysql -uroot UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES; # 4. 移除跳过验证配置重启(必须恢复安全设置) sed -i "s/skip-grant-tables//" /etc/mysql/conf.d/docker.cnf docker restart <容器ID> ``` > ⚠️ 警告:`skip-grant-tables`会使数据库完全开放,操作后务必立即恢复(引用[3]) --- #### 🔒 关键注意事项 1. **密码强度要求** MySQL 8.0+ 需包含大小写字母、数字和特殊字符(如 `P@ssw0rd!`) 2. **远程访问权限** 若需远程连接,执行: ```sql GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; # 引用[4] ``` 3. **密码保存建议** 使用`docker secrets`或环境变量文件: ```bash echo "MYSQL_ROOT_PASSWORD=YourPassword" > .env docker run --env-file .env ... ``` --- ### 相关常见问题 1. Docker中MySQL密码修改后,远程客户端仍无法连接,如何排查? 2. 如何为MySQL容器配置密码自动过期策略? 3. 使用Docker Compose部署MySQL时,如何安全传递密码? 4. 修改密码后出现“Authentication plugin 'caching_sha2_password'”错误如何解决? > 引用来源说明:本文操作步骤综合自[1][2][3][4][5]的容器MySQL管理实践
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值