我正在使用以下docker-compose设置:

db:
  image: mysql:5.5
  ports:
    - "3306:3306"
  environment:
    MYSQL_ROOT_PASSWORD: mysql
    MYSQL_USER: userx
    MYSQL_PASSWORD: password
    MYSQL_DATABASE: mydb


并且我需要能够使用以下命令更新用户的权限:

GRANT ALL PRIVILEGES ON *.* TO 'userx' with grant option;


但是我不想更改默认命令,因此我可以继续使用上面的设置。但是我真的不知道最好的方法是什么。

我试图从上面创建自己的图像:

FROM mysql:5.5
CMD mysqld && mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'snap' with grant option;"


谁能指出我正确的方向

最佳答案

两种可能的解决方案。


自订图片

FROM mysql:5.5
RUN mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'snap' with grant option;"



编辑:此选项未经测试。


使用GRANT命令将.sql文件挂载(即添加卷),或者使用.sh命令将mysql -u ...文件挂载到容器上的/docker-entrypoint-initdb.d文件夹中。


编辑:通过@jonnie测试的工作sh文件内容是

mysql --user="root" --password="rootpass" -e "GRANT ALL PRIVILEGES ON *.* TO 'snap' with grant option;"

10-08 07:10
查看更多