Docker运行Mysql

HilLuscombe 8年前
   <h2>Introduction</h2>    <p> </p>    <p>本章主要说明了如何在docker中的linux中启用mysql服务。</p>    <p>我的需求是在宿主机上写代码,适用mysql数据库,不想在宿主机上安装,把数据库直接放到docker里。</p>    <p>由于我的docker 拉取ubuntu:latest时16.04尚未发布,所以本文的基准镜像是ubuntu 14.04,其他linux版本理论上也适用。</p>    <pre>  <code class="language-bash">REPOSITORY TAG   IMAGE ID      CREATED       SIZE  ubuntu    latest b72889fa879c  6 weeks ago   188 MB  </code></pre>    <p>通过 docker run -it -p 3306:3306 ubuntu /bin/bash 进入容器,此处的命令含义可以在Dcoker初体验中了解。</p>    <h2>安装配置mysql</h2>    <p>在容器中的操作:</p>    <pre>  <code class="language-bash">apt-get update && apt-get install mysql-server -y  </code></pre>    <p>配置mysql,使得可以远程登陆。首先修改帮顶地址</p>    <pre>  <code class="language-bash">vi /etc/mysql/my.cnf  </code></pre>    <p>将 bind-address = 127.0.0.1 改为</p>    <p>bind-address = 0.0.0.0</p>    <p>保存后,从终端进入mysql:</p>    <pre>  <code class="language-bash">service mysql start  mysql -u root -p -A  </code></pre>    <p>-u 是指定用户, -p 是密码登陆的意思,输入密码后登陆,( -A 没太理解,但是后面从宿主机登陆的时候,好像没加出问题了,欢迎留言写下你的观点)。进入后通过 create database a_new_sql 来创建新的数据库, use a_new_sql 来使用这个数据库。</p>    <p>进入数据库后,执行以下命令赋予权限:</p>    <pre>  <code class="language-bash">grant all on * to 'root'@'%' identified by 'mysecret';  </code></pre>    <p>表示将当前数据库( on * 代表的含义)的所有权限( all )赋予( grant )给用户root( 'root' ),允许它从任意地点登陆( @'%' ),它的登陆密码是 mysecret (identified by ‘mysecret’)</p>    <p>exit 退出mysql的命令行,回到容器的命令行。</p>    <p>在宿主机连接:</p>    <pre>  <code class="language-bash">mysql -u root -p -h 127.0.0.1  </code></pre>    <p>输入密码后登陆成功。在mysql-workbench等可视化工具里也是一样的登陆方法。</p>    <h2>Reference</h2>    <p><a href="/misc/goto?guid=4959673848464838809" rel="nofollow,noindex">Docker 安裝與操作</a></p>    <p><a href="/misc/goto?guid=4959673848554331050" rel="nofollow,noindex">linux下mysql的远程连接</a></p>    <p> </p>    <p>来自: <a href="/misc/goto?guid=4959673848638527646" rel="nofollow">http://www.findspace.name/easycoding/1701</a></p>    <p> </p>