Shell脚本:容器中的MySQL命令

Shell脚本:容器中的MySQL命令,mysql,docker,shell,Mysql,Docker,Shell,我正试图利用shell自动化一些任务。当我试图在容器中运行MySQL命令时遇到了麻烦 #!/usr/bin/env bash read -p "Username : " WEBUSER read -p "User password : " USERPASSWD read -p "Database name : " DBNAME RTPASSWD=`docker exec -it $(docker ps -f name=mysql

我正试图利用shell自动化一些任务。当我试图在容器中运行MySQL命令时遇到了麻烦

#!/usr/bin/env bash

read -p "Username : " WEBUSER
read -p "User password : " USERPASSWD
read -p "Database name : " DBNAME
 
RTPASSWD=`docker exec -it $(docker ps -f name=mysql -q) cat /run/secrets/password`

docker exec -it $(docker ps -f name=mysql -q) mysql -u root -p${RTPASSWD} -Bse " CREATE USER '${WEBUSER}'@'%' IDENTIFIED BY '${USERPASSWD}' ; CREATE DATABASE ${DBNAME}; GRANT ALL ON ${DBNAME}.* TO '${WEBUSER}'@'%' "
当我运行脚本时,我得到了MySQL人。我认为由于('),它无法识别MySQL命令,但现在我不知道如何做到这一点

MySQL  Ver 15.1 Distrib 10.4.12-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Usage: mysql [OPTIONS] [database]

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
The following groups are read: mysql mariadb-client client client-server client-mariadb
The following options may be given as the first argument:
--print-defaults          Print the program argument list and exit.
--no-defaults             Don't read default options from any option file.
The following specify which files/extra groups are read (specified before remaining options):
--defaults-file=#         Only read default options from the given file #.
--defaults-extra-file=#   Read this file after the global files are read.
--defaults-group-suffix=# Additionally read default groups with # appended as a suffix.
.
.
.


有人可以帮我吗?

使用bash-x,我看到$RTPASSWD结尾有一个\r。所以,我用sed来删除它,现在它可以工作了。更正如下:

RTPASWD=`docker exec -t $(docker ps -f name=webapp_mysql -q) cat /run/secrets/Maria_root_pwd | sed 's/\r//g'`


谢谢

你可以在主机上运行
mysql
,连接到容器的
docker run-p
端口,而不运行这些
docker
命令吗?@DavidMaze我不能这样做,因为我在swarm模式下使用它。