2017-04-11 236 views
-1

我正在接收'沒有這樣的文件或目錄',當我啓動mysql時,即使該文件存在於正確的目錄中。沒有這樣的文件或目錄使用腳本文件

手創樂團:

#!/bin/bash 

/usr/bin/docker exec -i mysql /bin/bash <<EOF 
mysql -uroot -ppasswd 
CREATE DATABASE theDB CHARACTER SET utf8 COLLATE utf8_general_ci; 
GRANT ALL PRIVILEGES on theDB.* to [email protected]'%' IDENTIFIED BY 'passwd'; 
FLUSH PRIVILEGES; 
EOF 

docker.yml:

version: "2" 
services: 
    mysql: 
    image: mysql:latest 
    restart: always 
    container_name: mysql 
    environment: 
     - MYSQL_ROOT_PASSWORD=passwd 
    volumes: 
     - /temp/mysql_cnf:/etc/mysql/mysql.conf.d 
    ports: 
     - 3306:3306 
    command: /bin/sh -c "chmod +x /home/user/mysql-container/thescript.sh && /bin/sh /home/user/mysql-container/thescript.sh" 

+0

如果體系結構不匹配,您可以得到(誤導性)錯誤消息「no such file or directory」。如果您嘗試在32位系統上執行64位二進制或反之亦然 –

回答

0

乍一看,我懷疑那是因爲你的內嵌段被解釋爲多個命令。嘗試添加「\」以禁止EOL:

/usr/bin/docker exec -i mysql /bin/bash <<EOF 
mysql -uroot -ppasswd \ 
CREATE DATABASE theDB CHARACTER SET utf8 COLLATE utf8_general_ci; \ 
GRANT ALL PRIVILEGES on theDB.* to [email protected]'%' IDENTIFIED BY 'passwd'; \ 
FLUSH PRIVILEGES; 
EOF 
+0

謝謝,但這不起作用 – George

+0

我會嘗試添加-x(/ bin/bash -x << EOF)並查看是否提供任何線索。 –

+0

仍然一樣,沒有線索。 – George

0

CREATE不是有效的Bash命令。無論如何,Bash包裝器外殼看起來都是多餘的。

#!/bin/bash  
/usr/bin/docker exec -i mysql mysql -uroot -ppasswd <<'EOF' 
CREATE DATABASE theDB CHARACTER SET utf8 COLLATE utf8_general_ci; 
GRANT ALL PRIVILEGES on theDB.* to [email protected]'%' IDENTIFIED BY 'passwd'; 
FLUSH PRIVILEGES; 
EOF 
+0

謝謝,但它仍然給我同樣的錯誤。 – George

相關問題