第一: 启动容器后用link 链接, 官方的mysql 容器有以下几个环境变量。
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql
docker run -it --link some-mysql:mysql daocloud.io/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 daocloud.io/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=5.7
TERM=xterm
MYSQL_PORT_3306_TCP_ADDR=172.17.0.3
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://172.17.0.3:3306
MYSQL_ENV_MYSQL_VERSION=5.7.11-1debian8
MYSQL_PORT_3306_TCP=tcp://172.17.0.3: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=2.7.11
MYBLOG_ENV_MYSQL_PORT_3306_TCP_ADDR=mysql
MYBLOG_ENV_MYSQL_PASSWORD=mysql
MYBLOG_PORT=tcp://172.17.0.4: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=172.17.0.4
MYBLOG_ENV_GPG_KEY=C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF
MYBLOG_PORT_80_TCP_PORT=80
MYBLOG_PORT_80_TCP_PROTO=tcp
TERM=xterm
MYBLOG_ENV_PYTHON_PIP_VERSION=8.1.1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MYBLOG_PORT_80_TCP=tcp://172.17.0.4:80
MYBLOG_ENV_LANG=C.UTF-8
MYBLOG_ENV_MYSQL_USERNAME=root
PWD=/
第三种方法:直接以client 端登陆mysql
sudo apt-get install mysql-client
mysql -h172.17.0.3 -P3306 -uroot -pmysql
第四种: 在容器里面添加ssh-server
[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D
[program:httpd]
command=/bin/bash -c "exec /usr/sbin/httpd -DFOREGROUND"
解决Navicat无法连接到MySQL的问题
解决Navicat无法连接到MySQL的问题
问题一:本地IP(xxx.xxx.xxx.xxx)没有访问远程数据库的权限。于是下面开启本地IP(xxx.xxx.xxx.xxx)对远程mysql数据库的访问权限。
这里开启权限,要在远程数据库服务器上开:
解决办法:
1、首先在远程服务器上连接进入mysql,在cmd中输入mysql -u root -p,然后回车,输入密码后回车进入mysql命令行。
2、输入下面命令,授权所有的客户端都可以访问服务器的权限,下面的‘123456’为你数据库的实际密码,记得修改:
grant all privileges on *.* to root@'%' identified by '123456'
3、输入下面命令,刷新权限
flush privileges
4、进入相应目录修改ssh_config和sshd_config文件
cd /etc/ssh
vi ssh_config
将 #PasswordAuthentication yes改为 PasswordAuthentication yes,我们去掉了它前面的#
编辑sshd_config 做同样的去掉‘#’ *** 作
5、然后重新启动mysql服务
/etc/init.d/mysqld restart
这里如果加入了服务,就直接可以用service。
1. 系统要求需要在一个android pad中集成nginx,mysql,php,sshd,因为芯片方案为广州某厂提供,故他们愿意帮助我们,由他们提供集成好后的rom.
2. 第一版rom拿到后尝试启动sshd 正常,但是nginx发生问题,找不到errors.log和access.log,于是手动创建,发现不可写,使用mount后发现/和/system为ro,于是重新挂载为可读写
nginx启动后测试正常,但是无法执行phpinfo,于是启动php-fpm,正常.
3. mysql尝试启动后发现没有安装,于是mysql_install_db --user=root,然后发现不知道这样的密码,后来发现可以
,但是当时没有想到,于是
正常.
4. 至此一切经测试无误,接下来既是自启动问题,android启动在/init.rc中,于是vi进入在末尾添加
5. 这时需要编写setup.sh,按照顺序依次启动即可,但是发现每次pad重启后/和/system均挂载为ro,所以脚本中需要先remount
但是此时发现mysql偶尔会不启动,于是将其拆分至另一脚本mysql-setup.sh,问题解决.
6. 此时发现需要创建2个文件,修改3个文件,添加4个软链(/bin中),所以决定使用shell书写一个脚本去解决问题,否则批量出货后时间成本太高,所以尝试0基础书写- -!
7. 因为这样写虽然明了但是并不给用户看,于是做了简化
至此完成.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)