Как получить доступ к серверу MySQL, работающему в Docker-контейнере на удаленной машине.
Вот мой dockerfile:
MAINTAINER debu_bbsr@yahoo.com
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server \
&& sed -i "s/127.0.0.1/0.0.0.0/g" /etc/mysql/mysql.conf.d/mysqld.cnf \
&& mkdir /var/run/mysqld \
&& chown -R mysql:mysql /var/run/mysqld
VOLUME ["/var/lib/mysql"]
EXPOSE 3306
CMD ["mysqld_safe"]
Я создал образ:
sudo docker build -t deb_mysql_image .
Запустите контейнер Docker с изображением выше:
sudo docker run -i -t -d -p 3306:3306 --name mysql_deb_container deb_mysql_image
Войдите в контейнер MySQL:
`k8smaster@k8smaster:~/debashish$ sudo docker exec -it mysql_deb_container mysql`
Создайте разных пользователей и базу данных:
mysql> create user debashish identified by 'debashish';
mysql> create user debmysql identified by 'debmysql';
mysql> create database debdb;
mysql> use debdb;
Предоставьте привилегии пользователям и создайте таблицу:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'debashish' WITH GRANT OPTION;
CREATE TABLE debtbl1 (name VARCHAR(20), address VARCHAR(50));
Заполните таблицу:
insert into debtbl1 values('Debashish', 'Shanghai');
insert into debtbl1 values('Debu', 'Livingston, Shanghai');
Теперь получите доступ к содержимому вышеупомянутой таблицы MySQL с удаленной машины с клиентом MySQL:
k8snode1@k8snode1:~$ mysql -u 'debashish' -p -h 10.10.10.2 -P 3306 -D debdb
Enter password
«Иногда» я сталкиваюсь с проблемой -
ОШИБКА 1045 (28000): доступ запрещен для пользователя
Все, что я пропустилсделать его надежной системой, чтобы я не встречал "иногда" вышеуказанную ошибку.