码头工人|在新实例启动时创建新用户

时间:2018-10-06 14:57:26

标签: mysql docker

我目前正在与Docker一起使用MySQL创建数据库复制。我需要创建用户并在Docker容器启动时授予复制权限。

我看过MySQL的Dockerhub,看来您可以将文件复制到目录中,然后它们将按字母顺序执行。 See here

我创建了一个init.sql文件,如下所示-

CREATE USER 'slave'@'%' IDENTIFIED BY 'password'
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%'

因此,它实际上只是创建用户,然后授予他们复制权限。

但是,运行此数据库时,数据库永远不会启动,因为sql会产生错误

  

mbind:不允许操作

因此,似乎init.sql文件正在运行,但没有权限吗?

我的Dockerfile很小,这就是它-

FROM mysql:latest

COPY Docker/database/init.sql /docker-entrypoint-initdb.d/init.sql

我还尝试通过执行以下操作来以此作为命令:

#!/bin/bash
mysql --protocol=socket -uroot -p$MYSQL_ROOT_PASSWORD <<EOSQL
CREATE USER 'slave'@'%' IDENTIFIED BY 'password'
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%'
EOSQL

1 个答案:

答案 0 :(得分:0)

我在您的示例的行尾添加了分号。 mysql数据库现在可以为我构建并运行。

CREATE USER 'slave'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';

如上面的评论所述,mbind错误与之无关:https://github.com/docker-library/mysql/issues/303