【问题标题】:Remote accessing mysql server running on docker container远程访问在 docker 容器上运行的 mysql 服务器
【发布时间】:2019-04-18 09:07:09
【问题描述】:

如何访问在远程机器的 Docker 容器上运行的 MySQL 服务器。

这是我的 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):用户访问被拒绝

为了使它成为一个健壮的系统,我缺少任何东西,所以我不会“有时”遇到上述错误。

【问题讨论】:

    标签: mysql docker containers


    【解决方案1】:

    您的用户很可能没有从该服务器访问的权限,无论是授予该特定服务器的权限还是全局权限。

    运行:

    GRANT ALL PRIVILEGES ON *.* TO 'debashish'@'%' WITH GRANT OPTION; 
    FLUSH PRIVILEGES;
    

    【讨论】:

      【解决方案2】:

      问题在于 - 每当重新启动 Pod 时,分配给 Mysql DB 的所有权限也会被删除。

      因此解决方案是 - 编写一个 shell 脚本:

          1.  Executed when the Pod is started/scaled-in/container is started.
          2.  The shell script automatically creates the database and users.
          3.  Shell script then grants permission to the users for the DB.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-25
        • 2017-04-21
        • 1970-01-01
        • 1970-01-01
        • 2019-10-10
        • 2012-12-13
        • 1970-01-01
        相关资源
        最近更新 更多