我目前正在与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
答案 0 :(得分:0)
我在您的示例的行尾添加了分号。 mysql数据库现在可以为我构建并运行。
CREATE USER 'slave'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
如上面的评论所述,mbind错误与之无关:https://github.com/docker-library/mysql/issues/303