Docker mysql容器在使用数据库指定时未使用密码创建用户

Docker mysql容器在使用数据库指定时未使用密码创建用户,mysql,docker,Mysql,Docker,我有一个用例,需要在一个容器上运行mysql并将其链接到另一个容器。我也有我的数据库文件数据在我的主机位置,这是作为一个卷安装到数据库容器。。。条件是不以root用户身份运行容器,而是以具有所有权限的其他用户身份运行容器。 安装的卷中有数据库 我运行了以下命令: docker run -d -v ~/testdata:/var/lib/mysql -e MYSQL_DATABASE=Testdata_DB -e MYSQL_USER=testdata -e MYSQL_PASSWORD=mypa

我有一个用例,需要在一个容器上运行mysql并将其链接到另一个容器。我也有我的数据库文件数据在我的主机位置,这是作为一个卷安装到数据库容器。。。条件是不以root用户身份运行容器,而是以具有所有权限的其他用户身份运行容器。 安装的卷中有数据库

我运行了以下命令:

docker run -d -v ~/testdata:/var/lib/mysql -e MYSQL_DATABASE=Testdata_DB -e MYSQL_USER=testdata -e MYSQL_PASSWORD=mypasswordhere -p 3306:3306 --name=testdata_db mysql
上面的命令将启动容器,但当我猛击正在运行的容器时,我无法看到使用密码的用户。只有mysql正在运行

docker exec -it testdata_db bash

请告诉我哪里出了问题。我遵循docker official repo链接下的文档。

我通过使用所需的sql命令创建init.sql来解决这个问题,以创建用户表,并将其从主机加载到docker-entrypoint-initdb.d/下的容器中,并根据需要设置环境变量。这使得mysql实例作为一个新实例加载,并加载所有必需的表和数据。 最后的命令是:

docker run --name testdata_db -p 3306:3306 -e "MYSQL_ROOT_PASSWORD= " -e "MYSQL_USER=test" -e "MYSQL_PASSWORD=mypass" -e "MYSQL_DATABASE=mysql" -v ~/mysql/db/:/var/lib/mysql/ -v ~/mysql/init/:/docker-entrypoint-initdb.d/ -d mysql

我通过创建一个init.sql来解决这个问题,该init.sql使用所需的sql命令来创建用户表,它从我的主机加载到docker-entrypoint-initdb.d/下的容器中,并根据需要设置env变量。这使得mysql实例作为一个新实例加载,并加载所有必需的表和数据。 最后的命令是:

docker run --name testdata_db -p 3306:3306 -e "MYSQL_ROOT_PASSWORD= " -e "MYSQL_USER=test" -e "MYSQL_PASSWORD=mypass" -e "MYSQL_DATABASE=mysql" -v ~/mysql/db/:/var/lib/mysql/ -v ~/mysql/init/:/docker-entrypoint-initdb.d/ -d mysql

请澄清你没有看到用户是什么意思?您的意思是没有创建用户?是否要以非根用户身份运行容器,或者您想在mysql\u user中创建一个mysql用户吗?mysql用户不是在
/etc/passwd
中创建的,我想创建一个容器,其中用户作为mysql\u用户,密码作为mysql\u密码,DB作为mysql\u数据库,它存在于装载的卷中……如果我运行上述docker命令,则不会创建用户……但是mysql服务器容器成功启动请澄清您没有看到用户是什么意思?您的意思是没有创建用户?是否要以非根用户身份运行容器,或者您想在mysql\u user中创建一个mysql用户吗?mysql用户不是在
/etc/passwd
中创建的,我想创建一个容器,其中用户作为mysql\u用户,密码作为mysql\u密码,DB作为mysql\u数据库,它存在于装载的卷中……如果我运行上述docker命令,则不会创建用户……但是mysql服务器容器成功启动