У меня есть файл Docker, над которым я работаю, который вытягивает Mysql 5.6 и настраивает его (в основном с помощью сценария bash и sql). Я могу построить и запустить его, но когда я пытаюсь подключиться к базе данных в контейнере я всегда получаю:Не удается подключиться к контейнеру docker mysql
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 и Баш скрипт соответственно:
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 [email protected]'localhost' IDENTIFIED BY 'testing'";
mysql -uroot -p"$DATABASE_PASSWORD" -e "GRANT ALL PRIVILEGES ON portal.* TO [email protected]'localhost'";
mysql -uroot -p"$DATABASE_PASSWORD" -e "FLUSH PRIVILEGES";
mysql -uroot -p"$DATABASE_PASSWORD" $DB < /tmp/foo.sql
Розетка присутствует в контейнере. Если вы подключаетесь извне контейнера, вы должны предоставить хосту '-h', чтобы mysql мог найти вашу базу данных. –
Я обращаюсь к нему изнутри контейнера. В основном запускайте контейнер в/bin/bash и пытайтесь получить доступ к db оттуда, используя mysql -u root -p – ryekayo
Существует ли сокет на этом пути в контейнере? –