原因是文件夹没权限,同时把宿主和容器中相应的文件夹设置为归属mysql用户,但结果是只有一个文件夹归属mysql用户,再次把不是归属mysql的文件夹设置为归属mysql用户后,另一个文件夹又变成不归属mysql用户,这是什么原因?如下所示:
宿主:
chmod +w /data/volumes-mysql
chown -R mysql:mysql /data/volumes-mysql
chcon -R -t mysqld_db_t /data/volumes-mysql
容器:
chmod +w /home/databases/mysql/data
chown -R mysql:mysql /home/databases/mysql/data
chcon -R -t mysqld_db_t /home/databases/mysql/data
cd /data/volumes-mysql
ls -al
drwxr-xr-x 2 27 27 4096 12月 3 20:09
drwxr-xr-x 6 root root 4096 12月 3 19:54
-rw-rw---- 1 27 27 18874368 12月 3 20:09 ibdata1
-rw-rw---- 1 27 27 5242880 12月 3 20:09 ib_logfile0
-rw-rw---- 1 27 27 5242880 12月 3 20:09 ib_logfile1
cd /home/databases/mysql/data
ls -al
drwxr-xr-x 2 mysql mysql 4096 Dec 3 12:09
drwxr-xr-x 3 root root 4096 Dec 3 12:02
-rw-rw---- 1 mysql mysql 5242880 Dec 3 12:09 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Dec 3 12:09 ib_logfile1
-rw-rw---- 1 mysql mysql 18874368 Dec 3 12:09 ibdata1
当我们的mysql 容器启动后,想要登陆mysql 的数据库怎么办。以下介绍几种方法, 其他容器的登陆也可以仿效。
第一: 启动容器后用link 链接, 官方的mysql 容器有以下几个环境变量。
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloudio/mysql
docker run -it --link some-mysql:mysql daocloudio/mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
第二种方法:已经有compose 启动的容器用link链接, 比如我的docker image 为pythondjangocdsample_mysql_1,可以用如下命令链接
docker run -ti --link pythondjangocdsample_mysql_1:mysql daocloudio/mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
或者用busybox 链接mysql 容器查看环境变量, 以下为myblog_mysql_1 中的环境变量。
docker run -ti --link myblog_mysql_1:mysql busybox
/ # env
HOSTNAME=2f0ab0a2e9c5
SHLVL=1
HOME=/root
MYSQL_ENV_MYSQL_DATABASE=myblog
MYSQL_ENV_MYSQL_MAJOR=57
TERM=xterm
MYSQL_PORT_3306_TCP_ADDR=1721703
MYSQL_ENV_MYSQL_ROOT_PASSWORD=mysql
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MYSQL_PORT_3306_TCP_PORT=3306
MYSQL_PORT_3306_TCP_PROTO=tcp
MYSQL_PORT=tcp://1721703:3306
MYSQL_ENV_MYSQL_VERSION=5711-1debian8
MYSQL_PORT_3306_TCP=tcp://1721703:3306
PWD=/
MYSQL_NAME=/pensive_morse/mysql
以下为myblog_myblog_1链接到myblog_mysql_1 中的环境变量。
docker run -ti --link myblog_myblog_1:myblog busybox
/ # env
MYBLOG_ENV_PYTHON_VERSION=2711
MYBLOG_ENV_MYSQL_PORT_3306_TCP_ADDR=mysql
MYBLOG_ENV_MYSQL_PASSWORD=mysql
MYBLOG_PORT=tcp://1721704:80
HOSTNAME=5ae02b948c2c
SHLVL=1
HOME=/root
MYBLOG_ENV_MYSQL_PORT_3306_TCP_PORT=3306
MYBLOG_ENV_MYSQL_INSTANCE_NAME=myblog
MYBLOG_NAME=/nostalgic_darwin/myblog
MYBLOG_PORT_80_TCP_ADDR=1721704
MYBLOG_ENV_GPG_KEY=C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF
MYBLOG_PORT_80_TCP_PORT=80
MYBLOG_PORT_80_TCP_PROTO=tcp
TERM=xterm
MYBLOG_ENV_PYTHON_PIP_VERSION=811
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MYBLOG_PORT_80_TCP=tcp://1721704:80
MYBLOG_ENV_LANG=CUTF-8
MYBLOG_ENV_MYSQL_USERNAME=root
PWD=/
第三种方法:直接以client 端登陆mysql
sudo apt-get install mysql-client
mysql -h1721703 -P3306 -uroot -pmysql
第四种: 在容器里面添加ssh-server
[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D
[program:>
以上就是关于docker mysql 容器 数据库文件怎么娴宿主机器上全部的内容,包括:docker mysql 容器 数据库文件怎么娴宿主机器上、如何进入启动的mysql docker容器、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)