2017-01-17 19 views
2

У меня проблема с использованием изображения docker mysql/mysql-server. Я хочу подключиться к серверу mysql, создать db, пользователь со всеми PRIVILEGES, чтобы иметь возможность создавать новую схему и запускать linibase в будущем.Не удается подключиться к mysql docker image

Я бегу контейнер, как это:

sudo docker run --name db -e MYSQL_ROOT_PASSWORD=qwe123 -e MYSQL_DATABASE=test \ 
    -d -p 3306:3306 mysql/mysql-server:5.6 --lower-case-table-names=1 

когда я docker ps я вижу, что он работает, но когда я пытаюсь запустить LiquiBase (с помощью корневой/qwe123) он потерпел неудачу с:

[ERROR] Failed to execute goal org.codehaus.mojo:sql-maven-plugin:1.5:execute (default-cli) on project db: null, message from server: "Host '172.17.0.1' is not allowed to connect to this MySQL server" -> [Help 1]

пытался с пользователем:

sudo docker run --name db -e MYSQL_ROOT_PASSWORD=qwe123 -e MYSQL_DATABASE=test \ 
    -e MYSQL_USER=admin -e MYSQL_PASSWORD=qwe123 -d -p 3306:3306 \ 
    mysql/mysql-server:5.6 --lower_case_table_names=1 

с пользователем администратора есть ошибка при создании новой схемы, ее выглядит как администратор имеет доступ только к тестовой базе данных:

[ERROR] Failed to execute goal org.codehaus.mojo:sql-maven-plugin:1.5:execute (default-cli) on project db: Access denied for user 'admin'@'%' to database 'test2' -> [Help 1]

с корнем следующие ошибки:

[ERROR] The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.

также попытался установить привилегии администратора в инициализации команды:

docker run --name db -e MYSQL_ROOT_PASSWORD=qwe123 -e MYSQL_DATABASE=test -d \ 
    -p 3306:3306 mysql/mysql-server:5.6 --lower_case_table_names=1 \ 
'--init-connect=CREATE USER `admin`@`localhost` IDENTIFIED BY "qwe123"; GRANT ALL PRIVILEGES ON *.* TO `admin`@`localhost` WITH GRANT OPTION; CREATE USER `admin`@`%` IDENTIFIED BY "qwe123";GRANT ALL PRIVILEGES ON *.* TO `admin`@`%` WITH GRANT OPTION;FLUSH PRIVILEGES;' 

В этом случай для пользователя root имеет ошибку:

[ERROR] Failed to execute goal org.codehaus.mojo:sql-maven-plugin:1.5:execute (default-cli) on project db: null, message from server: "Host '172.17.0.1' is not allowed to connect to this MySQL server" -> [Help 1]

для администратора - следующее:

12:13:57 [ERROR] The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.

пытался также использовать Localhost и 127.0.0.1 в качестве принимающей стороны к БД, всегда есть ошибка с подключением. Любые идеи?

+0

Если вы не используете внешний том хранилища, который не упоминается здесь для данных, каждый «запуск докеров» может создавать новые данные магазин. Вы можете попробовать запустить попытку 'CREATE USER', используя' docker exec' вместо 'docker run'. Это будет использовать уже запущенный контейнер вместо создания другого нового контейнера. –

+0

Сложность в том, что я хочу запустить изображение докера в задании Дженкинса. И в Дженкинсе я не могу открыть режим -ti для docker exec. –

+0

Так что я могу добавить таких пользователей: 'sudo docker run --name db -e MYSQL_ROOT_PASSWORD = qwe123 -e MYSQL_DATABASE = test -d -p 3306: 3306 mysql/mysql-server: 5.6 --lower-case-table- names = 1 docker exec -ti db mysql -uroot -pqwe123 СОЗДАТЬ ПОЛЬЗОВАТЕЛЬ 'admin' @' localhost' ИДЕНТИФИЦИРОВАН ПО "qwe123"; ГРАНТ ВСЕ ПРИВИЛЕГИИ НА *. * В 'admin' @' localhost' с опцией GRANT; СОЗДАТЬ ПОЛЬЗОВАТЕЛЮ 'admin' @'% 'ИДЕНТИФИЦИРОВАН ПО" qwe123 "; ГРАНТ ВСЕ ПРИВИЛЕГИИ НА *.* В 'admin' @'% 'с опцией GRANT; FLUSH PRIVILEGES; ' –

ответ

0

Вы должны разрешить пользователю в MySQL подключаться к IP-адресу вашего хост-компьютера. Не забудьте очистить привилегии после смены пользователя в MySQL

GRANT CREATE USER ON *.* TO 'root'@'%';

И перезапустить MySQL экземпляр

Также есть шанс иметь MySQL привязку к 127.0.0.1 через my.cnf. Если это так - измените привязку к 0.0.0.0, чтобы получить доступ к ней через любой IP-адрес

+0

Попытка добавить' FLUSH PRIVILEGES'' после создания пользователя, но не Помогите. –

+0

'' 'GRANT CREATE USER ON *. * TO 'root' @ '%';' '' И перезапустить экземпляр mysql – podarok

+0

Также есть возможность связать mysql с 127.0.0.1 через my.cnf. Если это так - измените привязку к 0.0.0.0, чтобы получить доступ к ней через любой IP – podarok