docker mysql 容器中执行mysql脚本文件解决远程访问权限问题并解决乱码

本文介绍了如何在Docker MySQL容器中执行SQL脚本文件,解决远程访问权限问题以及处理可能出现的乱码问题。首先,将宿主机的SQL文件复制到容器内,然后登录MySQL执行脚本。对于远程访问权限,通过特定命令赋予所有权限。遇到乱码问题时,调整编码设置,并重新执行SQL文件以确保数据正确显示。

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

docker 容器中执行mysql脚本文件并解决乱码及解决远程访问权限。

网上搜索了一大推,在容器mysql中执行一段代码这么难吗?搞得十分复杂。
于是自己记录一下,虽然简单,但是还是怕后面忘记掉,又搜大半天。

现在的需求是将我的sql文件导入进来,然后让docker中的mysql 来执行它。

注意mysql在docker容器中,如果你只导入到宿主机,然后进入容器去执行sql文件的话,一定会告诉你是打不开的,因为宿主机外部和容器内部是相对隔离的,不可能在容器内部去找宿主机的路径。

因此,我们要做的就是将宿主机的sql文件拷贝到容器内部,然后再让它去执行,这样就好了。
我把sql文件放置到了这里,这里是我曾经做的和docker sql文件挂载的普通目录,当然,你现在放在哪里都行。
在这里插入图片描述
要拷贝到容器内部的话,就需要先找到容器。
首先列举出来,看看正在运行的容器,对应mysql的id就知道了。

docker ps

在这里插入图片描述

然后我们通过id 去指定容器,这个也就是mysql容器的id
我们通过这个命令就可以进去到容器,我们进去到这里呢,句可以在这里去登录mysql,然后执行脚本。

 docker exec -it 4f50fbeb15ee /bin/bash

ctrl+d,退出容器
但是在这之前,我们要将sql文件拷贝进来。

docker cp /mysql/mysql/1.sql   4f50fbeb15ee:/home/1.sql

cp后面是你宿主机sql文件所在的路径,容器id后面一个是容器home文件夹,一个是我拷贝后命名的sql文件。这里就拷贝了。

拷贝后呢,我们再次进去容器。

 docker exec -it 4f50fbeb15ee /bin/bash

然后我们进去到容器的home

cd home

查看目录下是否有一个1.sql,容器内部查看不能用ll,所以用ls

ls

在这里插入图片描述
有的
我们需要登录容器中的mysql 还是那样的命令

mysql -u root -p

回车输入密码就可了
在这里插入图片描述

还是
在容器中执行,就用容器中的路径,和宿主机路径无关。
然后我们就执行

source /home/1.sql

在这里呢,我们是需要创建一些数据库表的需求,作为项目的数据支持。如果你的sql没有创建数据库的话,建议自己创建一个数据库。

create database reggie;

然后自己去选到这个数据库如下,然后去执行代码如下就可以了
在这里插入图片描述
还有一件事情,就是我们的远程数据库中的表我们很大可能并不能对其在远程进行增删改,这时你的项目之中就会报异常。这样我们去自己的项目中的target的log日志中查看一些信息。
你看下面这里其实就是我们本地主机对远程主机的数据库权限的访问问题,该怎么修改呢?

在这里插入图片描述

那么就赋予权限,全部的。
还有就是这里其实还有一个版本的问题,我尝试网上的做法是这样去赋予权限的,但是它报错了。

在这里插入图片描述

我的是mysql8的版本,这样我们去安排权限,我们只需要这样去做。

 GRANT ALL ON *.* TO 'root'@'%';

然后刷新权限

flush privileges;

在这里插入图片描述
这样就没有问题了。
但是有的时候啊,执行完毕后,他会存在一些乱码。

于是我们可以去尝试查看一些编码

 show variables like '%char%';

我将这些编码全部改为utf-8
在这里插入图片描述

set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_database=utf8;
set character_set_results=utf8;
set character_set_server=utf8;

这样设置完成后,我们还需要去重新执行sql文件,如下。
在这里插入图片描述

这样做是有效的,后来我数据库中存在乱码的字段就全部正常了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兰舟千帆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值