如何访问在远程计算机上的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):用户的访问被拒绝
我缺少使它成为一个强大的系统的任何东西,因此我有时不会遇到上述错误。
答案 0 :(得分:0)
您的用户很可能无权访问该服务器,或者授予该特定服务器特权或全局特权。
运行:
GRANT ALL PRIVILEGES ON *.* TO 'debashish'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
答案 1 :(得分:0)
问题在于-每当重新启动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.