无法连接到mysql docker容器

我有一个Dockerfile,我正在处理MySQL 5.6并进行configuration(主要是使用bash和sql脚本)。 我能够构build和运行它,但是当我尝试连接到容器中的数据库时,我总是得到:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 

我曾尝试访问MySQL数据库通过使用:

mysql -u root -p

mysql -u root -h 127.0.0.1 -p

我尝试了所有我能想到的东西,并在互联网上查阅文章,但没有任何工作。 有人能告诉我为什么吗? 这是我的Dockerfile和bash脚本分别:

 FROM mysql:5.6 MAINTAINER Ryan K. USER root ADD mysqlAddUser.sh /tmp/ CMD ["/tmp/mysqlAddUser.sh"] ADD foo.sql /docker-entrypoint-initdb.d/foo.sql EXPOSE 3306 ## Starting mysqld and running Database Scripts CMD ["/usr/bin/mysqld_safe"] 

Bash脚本:

 #!/bin/bash DATABASE_PASSWORD=test /usr/bin/mysqld_safe & mysqladmin --login-path=local -uroot -p"$DATABASE_PASSWORD" mysqladmin password "$DATABASE_PASSWORD" mysql -uroot -p"$DATABASE_PASSWORD" -e "UPDATE mysql.user SET Password=PASSWORD('$DATABASE_PASSWORD') WHERE User='root'" mysql -uroot -p"$DATABASE_PASSWORD" -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1')" mysql -uroot -p"$DATABASE_PASSWORD" -e "DELETE FROM mysql.user WHERE User=''" mysql -uroot -p"$DATABASE_PASSWORD" -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%'" mysql -uroot -p"$DATABASE_PASSWORD" -e "FLUSH PRIVILEGES" DB_ROOT_PASS=TEST DB=portal mysql --login-path=local -uroot -p"$DB_ROOT_PASS" mysql -uroot -p"$DATABASE_PASWORD" -e "CREATE DATABASE portal"; mysql -uroot -p"$DATABASE_PASSWORD" -e "CREATE USER portaluser@'localhost' IDENTIFIED BY 'testing'"; mysql -uroot -p"$DATABASE_PASSWORD" -e "GRANT ALL PRIVILEGES ON portal.* TO portaluser@'localhost'"; mysql -uroot -p"$DATABASE_PASSWORD" -e "FLUSH PRIVILEGES"; mysql -uroot -p"$DATABASE_PASSWORD" $DB < /tmp/foo.sql 

在Docker容器中与mysql的同样的问题挣扎。 有时我可以连接到mysql客户端,但更多的时候不能。 切换到mariadb并有同样的问题。

对我来说似乎已经解决了这个问题,在我的脚本中添加一些睡眠命令,这些命令会创build,启动和销毁Docker容器。 在像“docker运行”和“docker停止”之类的命令之后,我添加了“睡眠10”,这似乎有所帮助。