前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker安装mysql

docker安装mysql

作者头像
魔王卷子
发布2019-05-31 10:32:33
5.7K0
发布2019-05-31 10:32:33
举报
文章被收录于专栏:魔王卷子的专栏

记录一下自己使用docker安装mysql的过程。

我对比了一下。发现第一个是mysql官方推出的,而第二是docker自带library推出的。那么我肯定选择mysql官方推出的mysql了。

既然确定了要安装的包,那么就要开始拉取了。

  • MySQL Server 5.5 (tag: 5.5, 5.5.61, 5.5.61-1.1.7) (mysql-server/5.5/Dockerfile)
  • MySQL Server 5.6 (tag: 5.6, 5.6.41, 5.6.41-1.1.7) (mysql-server/5.6/Dockerfile)
  • MySQL Server 5.7 (tag: 5.7, 5.7.23, 5.7.23-1.1.7) (mysql-server/5.7/Dockerfile)
  • MySQL Server 8.0, the latest GA (tag: 8.0, 8.0.12, 8.0.12-1.1.7, latest) (mysql-server/8.0/Dockerfile)
  • MySQL Server 8.0 for AArch64 (ARM64) (tag: 8.0-aarch64, 8.0.12-aarch64)

上面是可以安装的版本。那么我肯定是安装latest的。

安装

那么执行代码如下:

代码语言:javascript
复制
docker pull mysql/mysql-server

如果想要安装5.7版本的,可以执行以下命令:

代码语言:javascript
复制
docker pull mysql/mysql-server:5.7

好了等待之后,就安装成功了,接下来,我们看看我们在本地存储的镜像。

代码语言:javascript
复制
$ docker image ls
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
mysql/mysql-server                              latest              1fdf3806e715        5 weeks ago         309MB

接下来执行创建容器的命令。

代码语言:javascript
复制
docker run --name mysql1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server:latest

在这里要注意的是最后的:latest,这个是可省略的。如果刚才安装的是指定版本,比如5.7,那么我们就需要执行以下命令了:

代码语言:javascript
复制
docker run --name mysql1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server:5.7

好了,安装完成,就可以使用PHP进行连接测试了。

代码语言:javascript
复制
$pdo = new \PDO("mysql:host=127.0.0.1;dbname=mysql", "root", "123456");
$data = $pdo->query("select version()");
foreach($data as $item) {
    var_dump($item);
}

会提示如下错误:

代码语言:javascript
复制
Host '172.17.0.1' is not allowed to connect to this MySQL server

那么我们只能登录mysql进行修改数据了,首先是登录mysql,密码就是我们设置的123456:

代码语言:javascript
复制
$ docker exec -it mysql1 mysql -uroot -p
Enter password:

然后执行如下命令:

代码语言:javascript
复制
use mysql;
update user set host = '%' where user = "root";
flush privileges;

我们继续测试PHP脚本,发现链接就正常了:

代码语言:javascript
复制
$ php ./demo.php
/Users/baoguoxiao/demo.php:5:
array(2) {
  'version()' =>
  string(6) "8.0.12"
  [0] =>
  string(6) "8.0.12"
}

查询日志

代码语言:javascript
复制
docker logs mysql1

登录shell

代码语言:javascript
复制
docker exec -it mysql1 bash

停止容器

代码语言:javascript
复制
docker stop mysql1

开启容器

代码语言:javascript
复制
docker start mysql1

重启容器

代码语言:javascript
复制
docker restart mysql1

删除容器

代码语言:javascript
复制
docker stop mysql1
docker rm mysql1

从另外的容器中连接mysql

暂无

Docker 环境变量

其实我们在创建container的时候就已经用了一个环境变量了,就是MYSQL_ROOT_PASSWORD,现在我们来介绍一些其他的环境变量

  • MYSQL_RANDOM_ROOT_PASSWD 该值默认为ture(除非MYSQL_ROOT_PASSWORD设置了或者MYSQL_ALLOW_EMPTY_PASSWORD设置为true了),意思是在启动docker容器时随机生成root密码。密码打印到日志中。查看随机密码的方式如下: $ docker logs mysql1 2>&1 | grep GENERATED GENERATED ROOT PASSWORD: Axegh3kAJyDLaRuBemecis&EShOs
  • MYSQL_ONETIME_PASSWORD 默认为ture(除非MYSQL_ROOT_PASSWORD设置了或者MYSQL_ALLOW_EMPTY_PASSWORD设置为true了)root用户的密码设置为expired,必须先修改密码才能使用。
  • MYSQL_DATABSE 指定在容器创建时同时创建数据库的名称。如果启动参数也有MYSQL_USERMSQL_PASSWORD,则会创建用户并授予该数据库对应的用户权限。如果指定的数据库已经存在了,则该变量无效。
  • MYSQL_USER和MYSQL_PASSWORD 该变量用户创建用户名和密码,并为该用户授予MYSQL_DATABASE变量指定的数据库的超级用户权限。如果两个变量没有设置,则其他会被忽略。如果两个变量都已设置但是没有设置MYSQL_DATABASE,则创建的用户没有任何权限。
  • MYSQL_ROOT_HOST 默认情况下,MySQL会设置”root@localhost”账户,此账户只能从内部进行连接。要允许其他主机的根连接,就需要设置此变量了。例如,该值172.17.0.1(默认的docker网关IP)允许来自运行容器的主机的连接。但是该选项仅接受一条记录,但是允许使用通配符(例如,MYSQL_ROOT_HOST=172...*或MYSQL_ROOT_HOST=%)。
  • MYSQL_LOG_CONSOLE 当变量为true时(MySQL8.0服务器容器的默认状态),MySQL服务器的错误日志被重定向到stderr,以便错误日志进入docker容器的日志,并且可以使用docker logs mysqld-container进行查看。
  • MYSQL_ROOT_PASSWORD 此变量指定为MySQL root账户设置的密码。在命令行上设置MySQL root密码是不安全的,因为可以通过history查看命令历史从而获取创建的密码。所以最好是试用默认设置。
  • MYSQL_ALLOW_EMPTY_PASSWORD 默认为false,如果将其设置为true,则表示允许root用户使用空密码启动。但是在非开发环境设置此变量为true是不安全的,因为他会让MySQL实例完全不受保护,从而允许任何人都可以获得弯针的超级用户访问权限。最好试用默认设置。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-192,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 查询日志
  • 登录shell
  • 停止容器
  • 开启容器
  • 重启容器
  • 删除容器
  • 从另外的容器中连接mysql
  • Docker 环境变量
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档